Javascript 日期对象时区问题 - 不同的时区

Javascript Date Object Timezone issue - different timezones

本文关键字:时区 问题 日期 对象 Javascript      更新时间:2023-09-26

我正在使用一个日期/时间选择器,该选择器带有"友好"显示的输入值,我正在尝试将其转换为javascript日期对象。选择日期后,它采用以下格式:

2013年10月21日上午09:00

然后,我尝试使用以下函数将其隐藏到javascript对象:

function pickerDateToJavascriptObj(dateIn)
{
    dateIn = dateIn.split(/[- :]/);
    dateIn[0] = getMonthNumber(dateIn[0]);
    outDate = new Date(dateIn[2],dateIn[0],dateIn[1],dateIn[4],dateIn[5], "00");
    console.log(outDate);
    return outDate; 
}

我必须在我的页面上选择日期选择"开始"日期和"结束"日期。当我提交表单和控制台.log outDates时,日期被正确转换为对象,但是它们始终具有不同的时区。对于"开始"日期,我进入控制台:

Date {Mon Oct 21 2013 09:00:00 GMT+0100 (GMT Standard Time)}

对于"结束"日期,我得到:

Date {Thu Oct 31 2013 09:00:00 GMT+0000 (GMT Daylight Time)}

请注意 2 个日期的标准时间和夏令时之间的差异。

造成这种差异的原因是什么?

以下是 2 个输入:

<input type="text" placeholder="Start Date/Time" name="eventStart" id="eventStart" class="dateTimePicker" readonly="readonly">
<input type="text" placeholder="End Date/Time" name="eventEnd" id="eventEnd" class="dateTimePicker" readonly="readonly">

看起来您在英国并使用Firefox。

夏令时(又名"英国夏令时")在 10 月 27 日结束,因此您的开始日期在切换之前,结束日期在切换之后。

您还目睹了FireFox中的一个错误,因为虽然偏移量是正确的,但名称是颠倒的。

获取这样格式化的日期(而不是手动解析):

var myDate= $("#datepicker").datepicker({ dateFormat: 'dd-mm-yy' }).val();

API 文档:http://api.jqueryui.com/datepicker/#option-dateFormat

获取按如下格式设置的时间:

var myTime = $.datepicker.parseTime('HH:mm:ss', $("#datepicker").val());

API 文档:http://trentrichardson.com/examples/timepicker/#tp-formatting