我想使用moment.js将GMT日期时间字符串显示为IST(GMT +0530)时间格式。我将PHP日期时间值分配给javascript变量,然后使用moment.tz().format();
方法将GMT时间转换为IST时间。但是当我通过指定格式参数来警告转换后的值时,警报会显示带有中文字母的格式化时间。 moment.js显然令人困惑。请帮我解决这个问题......
GMT日期时间值为"2014-11-28 20:15:26"
,这是我从PHP变量获取的
"2014-11-29T01:45:26+05:30"
是使用moment.tz(m,zone).format();
"11月 29日 2014 1:45 早上"
是格式参数moment.tz(m,zone).format('MMM Do YYYY h:mm a');
的转换值的值
我的代码是
var start_dates = '<?php echo $times_start; ?>';
var zone = "Asia/Kolkata";
var m = moment.tz(start_dates,'Europe/London').format();
var time = moment.tz(m,zone).format('MMM Do YYYY h:mm a');
答案 0 :(得分:1)
如果您使用lang
或locale
函数设置中文区域设置,那么获取中文字符的唯一方法就是。您可能已在脚本中的其他位置执行此操作。
关于您编写的代码,它将输入解释为伦敦的时间 - 这与GMT或UTC不同。 (伦敦在GMT和BST之间轮流使用夏令时。)
您也不需要格式化它只是为了再次解析它。
你只需要这样做:
var m = moment.utc(start_dates);
var time = m.tz(zone).format('MMM Do YYYY h:mm a');
这适用于任何支持的区域。但是如果你知道一个事实,你将永远转换到印度标准时间,因为它没有使用DST,你真的不需要时刻 - 时区。你可以这样做:
var m = moment.utc(start_dates);
var time = m.utcOffset("+05:30").format('MMM Do YYYY h:mm a');