【问题标题】:How to convert datetime-local to datetime while storing and retrieving from database如何在从数据库存储和检索时将 datetime-local 转换为 datetime
【发布时间】:2014-09-01 17:04:23
【问题描述】:

我正在努力使这成为可能我如何转换我在 jquery mobile 中使用的本地日期时间并将数据存储为日期时间,因为我的字段是数据库中的日期时间

'<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

【问题讨论】:

  • @flup jQM 标签与这个问题无关,即使 OP 正在使用 jQM。这个问题是具体而明确的,它只是关于日期时间。

标签: javascript jquery datetime


【解决方案1】:

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

此代码根据用户的时区设置(在我的例子中为澳大利亚 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"

【讨论】:

  • 我同意@MaksymKozlenko 所说的; moment.js 将大大简化您需要完成的工作。
  • 可以通过 moment.js 将 datetime-local 转换为 datetime 吗?
  • 此答案不适用于移动 datetime-local 输入类型,因为它不接受时区添加。要格式化 datetime-local,您需要:moment.utc("2013-07-31T05:05").local().format('YYYY-MM-DDThh:mm')
  • @Mattijs 格式是可行的方法,但它需要采用 24 小时格式,否则下午会变得很糟糕。 moment.utc("2013-07-31T05:05").local().format("YYYY-MM-DDTHH:mm")
【解决方案2】:

使用 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?

你会发现更多:-)

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-29
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2019-12-26
      相关资源
      最近更新 更多