如何在存储和从数据库检索时将datetime-local转换为datetime

时间:2014-07-11 06:38:45

标签: javascript jquery datetime

我正在努力使这个可能如何转换我在jquery移动中使用的datetime-local和将数据存储为datetime,因为我的字段是数据库中的datetime

'<input type="datetime-local"' + demodata + ' />';

我正在使用jquery mobile并遇到重大问题

        if($(this).attr('type')==='datetime-local')
    {
              var $datevalue  =$(this).val();
                a[$(this).attr('name')] = $datevalue.toString(); //Have to convert to datetime instead
    }

我的日期时间 - 本地值采用以下格式:2014-07-18T12:12

3 个答案:

答案 0 :(得分:11)

moment.js库可以进行大量的日期时间处理,包括时区,日期格式等。它正确处理DST时间。

此代码根据用户的时区设置将本地时间转换为UTC(在我的情况下为澳大利亚EDT(UTC +1100)):

// convert local time to UTC
moment(new Date(2014, 0, 1, 0, 0, 0)).utc().format() 
// returns "2013-12-31T13:00:00+00:00"

// convert UTC to local time
moment.utc("2013-07-31T05:05").local().format()
// returns "2013-07-31T15:05:00+10:00"

答案 1 :(得分:3)

使用JavaScript的日期时间并非易事。 SO中有很多问题,并回答了如何从字符串转换为日期时间,反之亦然。

如果你从事这个课题,你会看到这些方面的复杂性:

  • 本地化:+/- n小时地理时移
  • 夏令时(DST):是/否,+ / - 1小时,具体取决于当前日期
  • 客户端浏览器的不同调整,年龄 UTC函数是否可用等。请注意,并非所有浏览器都以完全相同的方式解析ISO日期时间字符串

始终尝试了解哪些本地化以及哪些DST固有地包含在内或者是以静默方式解释。通过使用全长ISO字符串并使用详细的setter / getter,您将减少混淆。

所以从字符串到Date看看这里:

How can I convert string to datetime with format specification in JavaScript?

Date到字符串:

How do you get a timestamp in JavaScript?

你会发现更多: - )

答案 2 :(得分:1)

您应该能够使用输入值

创建一个新的Date
var str = $('[type=datetime-local]').val();
var d = new Date(str);

您没有为时间戳指定格式,但由于这是为了插入数据库,我编写了一个便利函数,它将JS日期转换为MySQL datetime格式。

JS小提琴: http://jsfiddle.net/UujT3/3/