datetimeDTypes method
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,
});
}