Sno*_*all 10 javascript datetime date momentjs
我使用moment.js在用户本地时区显示UTC日期:
var date = new Date(Date.UTC(2016,03,30,0,0,0));
var now = new Date();
var diff = (date.getTime()/1000) - (now.getTime()/1000);
var textnode = document.createTextNode(moment(date).format('dddd, DD.MM.YYYY') + ' a las ' + moment(date).format('HH:mm A'));
document.getElementsByClassName("date")[0].appendChild(textnode.cloneNode(true));
Run Code Online (Sandbox Code Playgroud)
我后来使用该diff变量来显示倒数计时器.
我想向当地时区的每个人展示一个不同的倒数计时器.(使用差异直到其时区的午夜,而不是UTC)
但我很想让它发挥作用.而不是使用var date = new Date(Date.UTC(2016,03,30,0,0,0));我可能需要使用moment.js的一些功能,这使我在用户时区的午夜.
最好的例子是新年前夕.如果我使用UTC,每个人都会拥有相同的计数器(剩下9个小时),但在世界的不同地方,这是没有意义的.对于澳大利亚的人来说,它应该是2个小时,而对于美国的人来说则是14个小时.
Mat*_*int 31
我不确定我是否完全理解你的问题,但我会给你一些一般的建议和提示.
使用moment.js时,几乎不需要使用该Date对象.仅用于与期望Date对象的其他API进行交互.
要获得UTC时刻,只需使用moment.utc(...),传递适当的参数,例如UTC moment.utc([2016,3,30])或moment.utc('2016-04-30')4月30日午夜.
如果要将其转换回用户的本地时间,请使用该.local()功能.例如, moment.utc('2016-04-30').local()将创建一个与提供的UTC时间等效的本地时间的时刻.
如果你想在用户的本地时间了一下,那简直是moment(...),如moment([2016,3,30])或moment('2016-04-30')午夜4月30日本地时间.
您可以使用该diff功能区分两个时刻,这可以在特定单位给出答案,例如在m1.diff(m2, 'seconds')哪里m1和m2是时刻对象.
你不需要打format两次电话.只需用方括号封装您想要输出的任何文本. .format('dddd, DD.MM.YYYY [a las] HH:mm A')
您可以查看片刻的语言环境支持.如果我没有弄错的话,"a las"表示西班牙语,但它并不总是 "拉斯维加斯",但有时候"a la",如果小时是1.此外,时刻只在其.calendar()功能中使用这些单词,例如在生成短语时"mañana a las 13:17"..format('LLLL')在西班牙语语言环境中格式化的常规日期将类似于:"sábado, 19 de marzo de 2016 13:17".因此,您可能希望验证"a las"是否恰好符合您的要求.
这个问题的标题是如何将日期设置为午夜.为此,我建议使用时刻的startOf功能. m.startOf('day')将把时间设定为m当天的开始,通常是午夜.请记住,并非每个当地日实际上都在每个时区的午夜开始.由于夏令时等异常,有些日子可能从1点开始.例如,这发生在今年10月16日的巴西.
此外,如果您在UTC模式下创建了该时刻,您可能希望在将其设置为当天开始之前将其转换回本地模式.如果您不想更改原始时刻对象,请务必先克隆它.
把这一切放在一起:
var m1 = moment.utc([2016,3,30]);
var m2 = m1.clone().local().startOf('day');
var now = moment();
var diff = m1.diff(now, 'seconds');
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
13830 次 |
| 最近记录: |