是dart:intl坏了吗? / DateFormat复杂化

时间:2013-02-22 19:28:36

标签: dart dart-pub

我使用Dart编辑器0.3.7_r18717(意味着编辑器是最新的(2013年2月)

import 'dart:intl';

显示错误"找不到引用的来源"

如果我通过pub

导入包
import 'package:intl/intl.dart';

然后编译成JS dart2js失败了一些奇怪的错误......

我想要的只是这样:

final String time = new DateFormat("HH:mm:ss","de").format(new DateTime.now());

根本不清楚为什么在这种情况下需要语言环境......

THX

[更新]
好的 - 我知道"奇怪的错误"什么都没有 - 所以如果我导入以下两个包,这里是输出:

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

String getTime() {
    final String time = new DateFormat("HH:mm:ss","en_US").format(new DateTime.now());
    //final String time = "20:05:00";
return time;
}

输出

Running dart2js...
Using snapshot /Developer/dart/dart-sdk/lib/_internal/compiler/implementation/dart2js.dart.snapshot
Wrote /Users/mikemitterer/dart/WebSockets.SAMPLE/web/out/jrelaisui.html_bootstrap.dart.js [410.0kb written in 5.3 seconds]
build.dart --machine --changed=web/jrelaisui.dart
file:/Users/mikemitterer/dart/WebSockets.SAMPLE/build.dart
build.dart returned error code 255

Uncaught Error: NoSuchMethodError : method not found: '_addFromInteger@0x36924d72'
Receiver: null
Arguments: [80]
Stack Trace:
    #0      Object.noSuchMethod (dart:core-patch:1737:25)
    #1      int.+ (dart:core-patch:1324:33)
    #2      Parser.translateCharacter    (package:analyzer_experimental/src/generated/parser.dart:4380:167)
    #3      Parser.computeStringValue (package:analyzer_experimental/src/generated/parser.dart:376:33)
    #4      Parser.parseStringLiteral (package:analyzer_experimental/src/generated/parser.dart:3451:76)
    #5      Parser.parsePrimaryExpression (package:analyzer_experimental/src/generated/parser.dart:3163:32)
    #6      Parser.parseAssignableExpression (package:analyzer_experimental/src/generated/parser.dart:837:51)
    #7      Parser.parsePostfixExpression (package:analyzer_experimental/src/generated/parser.dart:3061:51)

...

输出 - 清理来源:

build.dart --machine --clean
file:/Users/mikemitterer/dart/HelloWebComponent/build.dart
build.dart returned error code 255

'package:html5lib/src/encoding_parser.dart': Error: line 65 pos 14: class 'EncodingBytes' overrides function 'skip' of super class 'Iterable' with incompatible parameters
  String skip([CharPreciate skipChars]) {
             ^

build.dart --machine --clean
file:/Users/mikemitterer/dart/todomvc/build.dart
build.dart returned error code 255

'package:html5lib/src/encoding_parser.dart': Error: line 65 pos 14: class 'EncodingBytes' overrides function 'skip' of super class 'Iterable' with incompatible parameters
  String skip([CharPreciate skipChars]) {

...

这就是我的意思"奇怪的" : - )

2 个答案:

答案 0 :(得分:2)

包语法是正确的,这应该有效:

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

main() {
  print(new DateFormat.yMd().format(new DateTime.now()));
}

你在说什么“奇怪的错误”?

答案 1 :(得分:0)

import“dart:intl”;将无法导入它,因为它不是“核心”dart库之一,它必须作为包导入。您在dart2js中列出的错误看起来不像来自国际化代码,而是来自web_ui和analyzer_experimental包。如果您注释掉使用国际化并使用dart2js编译的行会发生什么?