时间没有通过moment.js正确转换为当地时间

时间:2015-06-11 13:11:22

标签: javascript c# momentjs utc

Operating System

我的日期时间具有上述格式,但是它没有转换为本地时间,而是将月份改为11月。

11-06-2015 12:44:30 

白色保存我正在使用C#的DateTime.UTCNow函数,在获取数据时我正在使用以下代码。

代码:

var check = moment('@Model.Invoice.InvoiceDate').format('YYYY-MM-DD HH:mm:ss');

                    var localTime = moment.utc(check).toDate();
                    localTime = moment(localTime).format('YYYY-MM-DD HH:mm:ss');

                    console.log(localTime);

正在发生的事情的例子:

 var formatDate = new Date('@Model.Invoice.InvoiceDate.ToLocalTime()');
                    console.log(formatDate);
                    formatDate = moment.utc(formatDate).toDate();
                    console.log(formatDate);
                    var dateTime = moment(formatDate).format('lll');
                    console.log(dateTime);

2 个答案:

答案 0 :(得分:2)

您可以使用ToString(" s")暂时打印UTC ISO 8601日期,但它将缺少Z,因此您需要自己添加。

var localTime = moment('@String.concat(Model.Invoice.InvoiceDate.ToString("s"), "Z")').format('lll');

或者在客户端添加Z:

var localTime = moment('@Model.Invoice.InvoiceDate.ToString("s")' + 'Z').format('lll');

答案 1 :(得分:1)

试试这个

var check = moment('11-06-2015 12:44:30', 'DD-MM-YYYY HH:mm:ss')
                    .format('YYYY-MM-DD HH:mm:ss');

或者在你的情况下这个

var check = moment('@Model.Invoice.InvoiceDate', 'DD-MM-YYYY HH:mm:ss')
                    .format('YYYY-MM-DD HH:mm:ss');

而不是

var check = moment('@Model.Invoice.InvoiceDate')
                   .format('YYYY-MM-DD HH:mm:ss');

在给出日期字符串的时刻时,您需要指定哪个部分是什么。