我在某个时区(例如“亚洲/加尔各答”)使用格式为“ hhmm”的时间“ 2000”。 尝试了其他答案中提到的几种方法,但没有一个给出正确的答案。
期望 :当地时区的确切时间(亚洲/加尔各答(当地)晚上8点)
这是在NodeJ而不是浏览器中在服务器端运行的。
尝试了以下方法:
let localTime1 = moment('2000').tz('Asia/Kolkata');
let localTime2 = moment('2000','hhmm').tz('Asia/Kolkata');
let localTime3 = moment('2000', 'hhmm', 'Asia/Kolkata');
两者的值都为1556827200000,在当地时区为1:30 pm,在UTC为8 pm。
我需要的是当地时区的晚上8点。
我还会收到如下警告:
Deprecation warning: value provided is not in a recognized RFC2822 or ISO
format. moment construction falls back to js Date(), which is not reliable
across all browsers and versions. Non RFC2822/ISO date formats are
discouraged and will be removed in an upcoming major release. Please refer to
http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments:
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i:
2000, _f: undefined, _strict: undefined, _locale: [object Object]
Error
at Function.createFromInputFallback (/user_code/node_modules/moment-timezone/node_modules/moment/moment.js:320:98)
at configFromString (/user_code/node_modules/moment-timezone/node_modules/moment/moment.js:2385:15)
at configFromInput (/user_code/node_modules/moment-timezone/node_modules/moment/moment.js:2611:13)
at prepareConfig
任何在正确方向上的帮助都会有所帮助。谢谢!
答案 0 :(得分:2)
要将'2000'
解析为8:00pm
,请使用:'HHmm'
(如Moment docs on parsing中所述,解析令牌区分大小写。'hh'
是12小时制)
要将日期/时间解析为特定时区,请使用moment.tz(..., String);
function。
这将为您提供“亚洲/加尔各答时区的8:00 pm”,而不是“ UTC 转换为亚洲/加尔各答时区的8:00 pm”。
将它们放在一起:
const moment = require('moment-timezone');
let localTime1 = moment.tz('2000', 'HHmm', 'Asia/Kolkata')
console.log(localTime1.toString());
// 'Thu May 02 2019 20:00:00 GMT+0530'
当然,您可以使用Moment的格式化功能以所需的任何格式输出日期/时间:)
答案 1 :(得分:-1)
尝试,希望有用:
moment('2000','hh:mm').tz('Asia/Kolkata').format('hh:mm');
,否则,请尝试以下链接: 复制以下代码并粘贴到javascript区域中,然后查看输出的第三行。
$('#divThai').text(moment('2000','hh:mm').tz('Asia/Kolkata').format('hh:mm'));