3

如何解析时区 ID,例如America/New_YorkintoUTC-5Europe/Helsinkiinto UTC+2

如果考虑 DST 会更好(因此在前面的 2 个示例中,现在都具有 DST)。

我正在尝试将其解析为日期时间对象:

America/New_York:20130208T080000

字符串的最后一部分很简单,可以使用自定义日期格式或简单地DateTime.parse()解析,但我没有找到解析时区 ID 的方法。

另外,我需要在服务器端执行此操作。我正在下载和解析 iCal 提要。

4

3 回答 3

2

您可以使用 unix date命令:

import 'dart:io';

main() {
  Process.run('date', ['+%z'],  environment: {"TZ":":Europe/Helsinki"})
    .then((e){
      print(e.stdout); // display +0300
    });
}
于 2013-07-19T12:58:51.850 回答
1

参考这个:http ://en.wikipedia.org/wiki/Tz_database ,看起来(来自一些有限的研究),你可以从这里下载 timezoneDB:http: //timezonedb.com/download in CSV 或 SQL 格式.

我认为下一步可能是代码生成一个 Dart 库,以硬编码从 CSV/SQL 数据到名称到 UTC 的转换(或根据需要动态加载数据)。

于 2013-07-19T13:50:42.367 回答
0

SDK 中没有任何东西内置了该信息,因此您需要将其导入您自己的程序或使用可以解析它的外部工具,如前面的示例中所示。

于 2013-07-19T16:56:21.513 回答