当语言环境设置为另一种语言时,如何从 momentjs 对象获取英语值?

How to get the value in English from a momentjs object when the locale is set to another language?

首先,我使用在 Momentjs 上运行的 bootstrap 日期时间选择器 (http://eonasdan.github.io/bootstrap-datetimepicker/)。

我的应用程序是多语言的,包括日语、中文和阿拉伯语等亚洲语言。当区域设置为其他语言时,有时值的格式(例如 am/pm)将包含亚洲字符。当我想将值保存到我的数据库中并稍后调用时,这会导致问题。

我的代码如下所示:

$('#bookingTime').datetimepicker({
    "format": 'YYYY-MM-DD hh:mm A', 
    locale: " << The locale I'm setting >> ",
    stepping: 30,
    minDate: moment().millisecond(0).second(0).minute(0).hour(0),
    maxDate: new Date(new Date().setYear(new Date().getFullYear() + 1)),
  });
});

目前我正在使用 moment 对象上的“_d”值从对象获取数据:

$('#bookingTime').data("DateTimePicker").date()._d.toString();

但我认为一定有更好、更少的 'greasy' 方式。 当语言环境设置为另一种语言时,moment 对象的英语值如何?

我想你只是想打电话给:

$('#bookingTime').data("DateTimePicker").date().format()

这将为您提供格式为 ISO8601 的日期:

2016-03-18T15:55:48-05:00

这可能是存储日期以备将来使用的最佳方式,因为任何文化都可以解释它。

您还可以使用 moment 的格式标记来获取各种其他格式。

如果您真的想要英文版,您可以更改语言环境。我可能会先复制它以避免在初始日期进行更改的意外副作用:

var a  = $('#bookingTime').data("DateTimePicker").date().clone();
a.locale('en');
a.format('YYYY-MM-DD hh:mm A');//the date with english AM/PM