parseDateInputProp function
Utility to parse date string templates for S360FDateInput Supports:
- 'NOW' (current date)
- ISO date string (e.g. '1999-10-20')
- '{BACKWARD_x}' (x days before today)
- '{FORWARD_x}' (x days after today)
Implementation
DateTime? parseDateInputProp(String? value) {
if (value == null || value.isEmpty) return null;
final now = DateTime.now();
if (value == 'NOW') return getLocalizedDateTime(now);
final isoReg = RegExp(r'^\d{4}-\d{2}-\d{2}');
if (isoReg.hasMatch(value)) {
try {
return getLocalizedDateTime(DateTime.parse(value));
} catch (_) {
return null;
}
}
final backwardReg = RegExp(r'^\{BACKWARD_(\d+)\}');
final forwardReg = RegExp(r'^\{FORWARD_(\d+)\}');
final backwardMatch = backwardReg.firstMatch(value);
if (backwardMatch != null) {
final days = int.tryParse(backwardMatch.group(1)!);
if (days != null) {
return getLocalizedDateTime(now.subtract(Duration(days: days)));
}
}
final forwardMatch = forwardReg.firstMatch(value);
if (forwardMatch != null) {
final days = int.tryParse(forwardMatch.group(1)!);
if (days != null) {
return getLocalizedDateTime(now.add(Duration(days: days)));
}
}
return null;
}