我可以将时间格式化为我想要的格式“3:38 PM”,但它是字符串类型。但我想要 DateTime 以便以后计算。我无法解析它们。我想从日期时间 1970-01-01 03:38:00.000 中删除这个“1970-01-01
”我希望这个字符串为“3:38 PM”->这个日期时间“03:38:00.000”。我怎样才能做到这一点?
import 'package:intl/intl.dart';
void main() {
String timeStr = "3:38 PM";
try {
DateTime parsedTime = DateFormat("HH:mm a").parse(timeStr);
print(parsedTime); // 1970-01-01 15:38:00.000
String formattedTime = DateFormat("h:mm a").format(parsedTime);
print(formattedTime); // Output: 3:38 PM
} catch (e) {
print("Invalid time format");
}
}
如果没有日期部分,则无法创建
DateTime
对象。如果您不传递日期部分并尝试将字符串解析为 DateTime,Dart 会自动将纪元日期 (1970-01-01) 添加到对象中。
两种可能的解决方法是:
import 'package:intl/intl.dart';
void main() {
String timeStr = "3:38 PM";
try {
final now = DateTime.now();
DateTime parsedTime = DateFormat("HH:mm a").parse(timeStr);
DateTime parsedTimeOfToday = DateTime(
now.year,
now.month,
now.day,
parsedTime.hour,
parsedTime.minute,
parsedTime.second,
parsedTime.millisecond,
parsedTime.microsecond,
);
print(parsedTimeOfToday); // 1970-01-01 15:38:00.000
String formattedTime = DateFormat("h:mm a").format(parsedTimeOfToday);
print(formattedTime); // Output: 3:38 PM
} catch (e) {
print("Invalid time format");
}
}
希望这有帮助:)