有没有办法在飞镖中本地化数字和日期?

时间:2013-03-30 10:25:32

标签: dart

在C#中,我们有CultureInfo,它影响ToString()对日期和数字的工作方式 例如。您可以通过执行以下操作来设置CurrentCulture:

Thread.CurrentThread.CurrentCulture = new CultureInfo("pl-PL");;

dart中是否有与上述相同的内容?

编辑:

  1. 简短的回答是:使用intl包(感谢大家的答案)
  2. 正如Alan Knight在下面指出的那样设置locale“by thread”在Dart中没有意义,因为我们不控制线程明确。
  3. 目前我写这个NumberFormating正在进行中,据我了解

3 个答案:

答案 0 :(得分:2)

是的,根据之前的条目,Intl库就是您想要的。您可以设置默认语言环境,或使用withLocale方法在函数中设置它。由线程设置它不起作用,因为没有线程。另一个主要区别在于,由于这些都已下载到浏览器中,因此您不会自动拥有所有可用的区域设置数据,但必须通过异步初始化步骤来加载数据。这可能会很快转换为使用新的延迟加载功能。

此外,语言环境不会影响系统toString()操作,而是必须使用DateFormat对象来打印日期。由于它仍在进行中,因此NumberFormat对于语言环境仍无法正常工作,但很快就会正常工作。

答案 1 :(得分:2)

intl库会为您提供此功能,但不会影响toString()的行为。

以下是一个例子:

作为依赖项添加到pubspec.yaml

dependencies:
  intl: any # You might specify some version instead of _any_

然后是代码示例:

import 'package:intl/intl.dart';
import 'package:intl/date_symbol_data_local.dart';

main() {
  initializeDateFormatting("en_US", null).then((_) {
    var formatter = new DateFormat.yMd().add_Hm();
    print(formatter.format(new DateTime.now()));
  });
}

输出如下:

  

07/10/1996 12:08 PM

答案 2 :(得分:0)

http://api.dartlang.org/docs/releases/latest/intl/Intl.html

从页面: Intl类为国际化相关任务提供了一个公共入口点。