使用moment.js将datepicker日期转换为ISO格式

时间:2015-07-11 04:43:39

标签: momentjs bootstrap-datepicker

我的任务是使用日期选择器以规定的格式选择日期,例如(MM-DD-YYYY)并将其作为ISO格式传递给服务器。

在测试输出时,ISO格式的日期落后一天。

例如

如果我选择

concat

我的输出ISO格式是

07-13-2015

在这里,您可以看到日期为13,但输出日期为12

我来自印度。我尝试使用zone和utcOffset,结果没有结果。我该如何正确设置

以下是JSFIDDLE

js代码

ISO format is :2015-07-12T18:30:00.000Z

我确实有一个隐藏字段,该值将在更改时更新,并将在服务器中处理。没问题。

3 个答案:

答案 0 :(得分:2)

$('#datetimepicker1').on("dp.change",function(e){
        var selectedDate = $('#datetimepicker1').find("input").val();
        selectedDate = moment(selectedDate,"MM-DD-YYYY");
        $(".temp").text(selectedDate.toISOString());
    });

您的selectedDate已经是一个时刻对象,因此您无需再将其反馈到另一个时刻。

示例:

var test = '07-13-2015'
var mtest = moment(test,"MM-DD-YYYY")
mtest.toISOString()
"2015-07-13T06:00:00.000Z"

答案 1 :(得分:0)

您可以尝试立即将日期格式转换为UTC。

selectedDate = moment(selectedDate).utc('MM-DD-YYYY')

答案 2 :(得分:0)

根据http://dygraphs.com/date-formats.html,如果您传递类似'07 -13-2015'的字符串,则表示2015年7月13日午夜。现在,如果使用toISOString函数,它将默认将其转换为UTC。要不将其转换为UTC,只需在toISOString函数中传递参数true。 (Moment.js docs

例如:

var date = '07-13-2015';
date = moment(date,'MM-DD-YYY');
console.log(date.toISOString(true));

这样,时刻不会将日期转换为UTC。