【问题标题】:How to format DateTime from string format in Dart/Flutter?如何在 Dart/Flutter 中从字符串格式格式化 DateTime?
【发布时间】:2021-08-10 20:03:32
【问题描述】:

我有这样格式的日期: “2021 年 5 月 31 日星期一 23:59:59 GMT+0000(协调世界时)” 但需要将其转换为本地时区并将其解析为 DateTime 格式。我该怎么做?

【问题讨论】:

  • 您好,欢迎来到 SO。你都尝试了些什么?你得到什么结果(或错误),这与你想要的输出有什么不同?如果您编辑问题以在您编写的一些代码中包含这些详细信息,这可能会有所帮助。
  • 有人建议此问题与How do I convert a date/time string to a DateTime object in Dart? 重复。我不认为这是一个 exact 重复。请自己检查一下,如果该问题回答了您的问题,请告诉我们。

标签: android flutter date datetime dart


【解决方案1】:

在 Flutter 中处理日期和时间时,您可以使用 DateTime class

要将UTC时间转换为本地时间,您可以这样做:

var myUTCTime = DateTime.utc(2021, DateTime.may, 31);
var localTime = myUTCTime.toLocal();

这是声明时间的格式:

DateTime.utc(int year, [int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, int millisecond = 0, int microsecond = 0])

请随意在dartpad 中运行上述代码并使用打印语句查看输出!

【讨论】:

  • 如何将此“2021 年 5 月 31 日星期一 23:59:59 GMT+0000(协调世界时)”转换为 DateTime
  • 可以使用我上面提到的格式:var myUTCTime = DateTime.utc(2021, DateTime.may, 31,23,59,59);
【解决方案2】:

无法使用 DateTime 对象直接解析此字符串。相反,请使用此功能 -

DateTime getLocalTimeStamp(String timeData) {
  Map<String, int> months = {"January": 1, "February": 2, "March": 3, "April": 4, "May": 5, "June": 6, "July": 7, "August": 8, "September": 9, "October": 10, "November": 11, "December": 12};
  List<String> splittedTime = timeData.split(" ").toList();
  String monthString = months[splittedTime[1]].toString().length < 10
     ? "0"+months[splittedTime[1]].toString()
     : months[splittedTime[1]].toString();
  String cleanedDate = splittedTime[3]+"-"+monthString+"-"+splittedTime[2]+"T"+splittedTime[4];
  DateTime parsedDate = DateTime.parse(cleanedDate);
  return parsedDate;
}

类似的东西 -

void main() {
  DateTime res = getLocalTimeStamp("Mon May 31 2021 23:59:59 GMT+0000");
  print(res.day);
}

【讨论】:

    猜你喜欢
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多