Moment.js:en locale应该以12小时格式显示时间吗?

时间:2015-05-27 08:36:32

标签: javascript time momentjs

我正在使用Moment.js 2.10.3。 根据moment-with-locales.js:

var defaultLongDateFormat = {
    LTS  : 'h:mm:ss A',
    LT   : 'h:mm A',
    L    : 'MM/DD/YYYY',
    LL   : 'MMMM D, YYYY',
    LLL  : 'MMMM D, YYYY LT',
    LLLL : 'dddd, MMMM D, YYYY LT'
};

这是否意味着语言环境应该以LTS格式显示12小时格式的时间?

a jsfiddle demonstrating the issue

抱歉,我的英语现在不太好......



var locale = "en";
var timeOffset = 540;

var currentTimeOffset = moment().utcOffset(timeOffset).locale(locale).format("LTS");
document.getElementById("timeOffset").innerHTML = currentTimeOffset;

var elLocale = moment.utc(currentTimeOffset, "LTS", 'el');

document.getElementById("elLocaleHours").innerHTML = elLocale.hours();
document.getElementById("elLocaleMinutes").innerHTML = elLocale.minutes();
document.getElementById("elLocaleSeconds").innerHTML = elLocale.seconds(); 


var enLocale = moment.utc(currentTimeOffset, "LTS", locale); 

document.getElementById("enLocaleHours").innerHTML = enLocale.hours();
document.getElementById("enLocaleMinutes").innerHTML = enLocale.minutes();
document.getElementById("enLocaleSeconds").innerHTML = enLocale.seconds(); 

var beLocale = moment.utc(currentTimeOffset, "LTS", 'be'); 

document.getElementById("beLocaleHours").innerHTML = beLocale.hours();
document.getElementById("beLocaleMinutes").innerHTML = beLocale.minutes();
document.getElementById("beLocaleSeconds").innerHTML = beLocale.seconds(); 

<script src="http://momentjs.com/downloads/moment-with-locales.min.js"></script>
<div id="timeOffset"></div>
<div id="elLocale"> elLocale (should be 12 h format) :
    <span id="elLocaleHours"></span>&nbsp; : &nbsp;
    <span id="elLocaleMinutes"></span>&nbsp; : &nbsp;
    <span id="elLocaleSeconds"></span>
</div>
<div id="enLocale"> enLocale (should be 12 h format) :
    <span id="enLocaleHours"></span>&nbsp; : &nbsp;
    <span id="enLocaleMinutes"></span>&nbsp; : &nbsp;
    <span id="enLocaleSeconds"></span>
</div>

<div id="beLocale"> beLocale (should be 24 h format) :
    <span id="beLocaleHours"></span>&nbsp; : &nbsp;
    <span id="beLocaleMinutes"></span>&nbsp; : &nbsp;
    <span id="beLocaleSeconds"></span>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

根据文档,我希望enLocale.hours()始终返回0 - 23范围内的小时数:

http://momentjs.com/docs/#/durations/hours/

  

与持续时间的其他getter一样,moment.duration()。hours()   获得时间(0 - 23)。

http://momentjs.com/docs/#/get-set/hour/

  

接受0到23之间的数字。如果超出范围,它将会冒泡   直到今天。

您可能希望使用基于特定区域设置的format()来显示它:

  

由于首选格式因区域设置而异,因此有一些格式   可用于根据区域设置格式化时刻的标记。