javascript - Globalize/Cldr : Globalize. formatDate(new Date(), {datetime :"long"}) 导致类似 "16. januar 2017. 13.30.17 GMT+1"的结果

标签 javascript c# jquery globalize cldr

我有 ASP.NET MVC 5 应用程序,我的全局化/验证 (Globalize 1.2.2) 负载是:

<script src="~/Scripts/cldr.js"></script>
<script src="~/Scripts/cldr/event.js"></script>
<script src="~/Scripts/cldr/supplemental.js"></script>
<script src="~/Scripts/globalize.js"></script>
<script src="~/Scripts/globalize/number.js"></script>
<script src="~/Scripts/globalize/date.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.globalize.js"></script>

<script type="text/javascript">
        $.when(
            $.getJSON("@Url.Content("~/Scripts/cldr/supplemental/likelySubtags.json")"),
            $.getJSON("@Url.Content("~/Scripts/cldr/supplemental/numberingSystems.json")"),
            $.getJSON("@Url.Content("~/Scripts/cldr/supplemental/timeData.json")"),
            $.getJSON("@Url.Content("~/Scripts/cldr/supplemental/weekData.json")"),
            $.getJSON("@Url.Content("~/Scripts/cldr/main/en/numbers.json")"),
            $.getJSON("@Url.Content("~/Scripts/cldr/main/en/ca-gregorian.json")"),
            $.getJSON("@Url.Content("~/Scripts/cldr/main/en/timeZoneNames.json")"),
            $.getJSON("@Url.Content("~/Scripts/cldr/main/sr-Latn/numbers.json")"),
            $.getJSON("@Url.Content("~/Scripts/cldr/main/sr-Latn/ca-gregorian.json")"),
            $.getJSON("@Url.Content("~/Scripts/cldr/main/sr-Latn/timeZoneNames.json")")
    ).then(function () {
        console.log("start slicing");
        return [].slice.apply(arguments, [0]).map(function (result) {
            console.log("slicing done");
            return result[0];
        });
    }).then(Globalize.load).then(function () {
        Globalize.locale('sr-Latn');
    }).then(console.log("LOADED EVERYTHING"));
</script>

但是现在,当我尝试在浏览器调试器中测试时,命令:

Globalize.formatDate(new Date(), {datetime:"long"});

给出了意想不到的结果。相反,用冒号作为时间分隔符,我得到了一个点:“16.januar 2017.07.57.1​​7 GMT+1”。 JSON repository在“timeFormats”和“dateTimeFormats”模式中看起来不错。 “en”或“de”一切正常,它们在存储库中定义了类似的时间和日期模式。

我哪里错了?

最佳答案

不是分隔符,而是长日期时间格式的一部分。

针对 "sr-Latn" 语言环境的长日期时间格式获得的 "16. januar 2017. 07.57.1​​7 GMT+1" 输出由 ( a) "16. januar 2017. 长日期格式,(b) 空格分隔符 "",以及 (c) "07.57.1​​7 GMT+1" 长时间格式。

注意dateTimeFormats.long = "{1} {0}"是粘合日期和时间的东西(即空格分隔符),dateFormats.long = "dd. MMMM y." (即,年份后面有一个),以及 timeFormats.long = "HH:mm:ss z" .

用作时间分隔符的来自"timeSeparator": "." .

话虽如此,如果您认为年份后面的不正确,或者分隔符应该是逗号而不是空格,请将票证提交到 CLDR:http://unicode.org/cldr/trac/newticket

关于javascript - Globalize/Cldr : Globalize. formatDate(new Date(), {datetime :"long"}) 导致类似 "16. januar 2017. 13.30.17 GMT+1"的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41671500/

相关文章:

javascript - JavaScript 中未定义的返回值

c# - CacheManager 内存缓存配置

c# - ManualResetEventSlim : Calling . Set() 后跟 .Reset() 不会释放 *任何* 等待线程

c# - c#反编译器是如何工作的

jquery - 我如何让 wapper 扩展?

jQuery 在变量中查找元素

javascript - 如何将输入数据数组传递给 Ajax 函数?

javascript - XPages 进度条在服务器页面持久性设置 "keep pages in memory"下无法按预期工作

javascript - 滑动以更改页面 - 不同的域

javascript - Polymer 3 + webpack + babel Class constructor PolymerElement 不能调用没有 'new'