如何在Dart中解析时区ID?

时间:2013-07-19 12:34:53

标签: dart

如何将时区ID(例如America/New_York)解析为UTC-5Europe/HelsinkiUTC+2

如果将DST考虑在内,那就更好了(所以在之前的两个例子中,现在都有DST)。

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

America/New_York:20130208T080000

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

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

3 个答案:

答案 0 :(得分:2)

您可以使用unix date命令:

import 'dart:io';

main() {
  Process.run('date', ['+%z'],  environment: {"TZ":":Europe/Helsinki"})
    .then((e){
      print(e.stdout); // display +0300
    });
}

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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