datetimeDTypes method

DTypeSelector datetimeDTypes({
  1. Iterable<TimeUnit> units = TimeUnit.values,
  2. TimeZoneSelectorMode timeZoneMode = TimeZoneSelectorMode.any,
  3. Iterable<String> timeZones = const [],
})

Implementation

DTypeSelector datetimeDTypes({
  Iterable<TimeUnit> units = TimeUnit.values,
  TimeZoneSelectorMode timeZoneMode = TimeZoneSelectorMode.any,
  Iterable<String> timeZones = const [],
}) {
  final unitValues = List<TimeUnit>.unmodifiable(units);
  if (unitValues.isEmpty) {
    throw ArgumentError.value(units, 'units', 'must not be empty');
  }
  final zones = List<String>.unmodifiable(timeZones);
  final needsZones =
      timeZoneMode == TimeZoneSelectorMode.anyOf ||
      timeZoneMode == TimeZoneSelectorMode.unsetOrAnyOf;
  if (needsZones != zones.isNotEmpty || zones.any((zone) => zone.isEmpty)) {
    throw ArgumentError.value(
      timeZones,
      'timeZones',
      'must be non-empty exactly for anyOf/unsetOrAnyOf',
    );
  }
  return _dtype('datetime', {
    'units': unitValues.map((unit) => unit.json).toList(growable: false),
    'timeZoneMode': timeZoneMode.wireName,
    'timeZones': zones,
  });
}