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

How to convert datetime-local to datetime while storing and retrieving from database

本文关键字:datetime-local 转换 datetime 数据库 存储 检索      更新时间:2023-09-26

我正在敲打我的头使这成为可能,我如何转换datetime-local,我在jquery移动和存储数据作为datetime作为我的字段是datetime在数据库

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

我正在使用jquery移动版,有重大问题

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

我的datetime-local值的格式是:2014-07-18T12:12

moment.js库可以做很多日期时间处理,包括时区、日期格式等。正确处理夏令时

这段代码根据用户的时区设置(在我的例子中是澳大利亚EDT (UTC +1100))将本地时间转换为UTC:

// 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"

使用JavaScript的日期时间不是一件容易的事情。在SO和answers中有许多问题如何从字符串转换为日期时间,反之亦然。

如果你研究这个问题,你会发现这些方面使它变得复杂:

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

始终尝试了解哪些本地化和哪些DST是固有包含的或被静默解释的。通过使用完整长度的ISO字符串和使用详细的setter/getter,您将减少混淆。

从字符串到Date看这里:

如何将字符串转换为日期时间与JavaScript格式规范?

Date到string:

如何在JavaScript中获得时间戳?

你会发现更多:-)

您应该能够使用输入的值创建一个新的Date:

var str = $('[type=datetime-local]').val();
var d = new Date(str);

你还没有为你的时间戳指定一个格式,但是因为这是被设计为插入到数据库中,我写了一个方便的函数,它将JS日期转换为MySQL datetime格式。

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