56

我应该以哪种格式输入日期和时间,以便在带有datetime类型的 HTML5 输入元素中使用?

我努力了:

  • 1338575502
  • 01/06/2012 19:31
  • 01/06/2012 19:21:00
  • 2012-06-01
  • 2012-06-01 19:31
  • 2012-06-01 19:31:00

它们似乎都不起作用。

4

7 回答 7

54

为了<input type="datetime" value="" ...

表示全局日期和时间的字符串。

:[RFC 3339] 中定义的有效日期时间,具有以下附加条件:

• 日期/时间语法中的文字字母 T 和 Z 必须始终为大写

• 整年产生式被定义为代表大于 0 的数字的四位或更多位

例子

1990-12-31T23:59:60Z

1996-12-19T16:39:57-08:00

http://www.w3.org/TR/html-markup/input.datetime.html#input.datetime.attrs.value

更新:

此功能已过时。尽管它在某些浏览器中可能仍然有效,但不鼓励使用它,因为它可能随时被删除。尽量避免使用它。

HTML 是用于输入日期和时间(小时、分钟、秒和秒的几分之一)以及时区的控件。此功能已从 WHATWG HTML 中删除,并且不再受浏览器支持。

相反,浏览器正在实现(并鼓励开发人员使用) datetime-local 输入类型。

为什么 HTML5 输入类型 datetime 从已经支持它的浏览器中删除?

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime

于 2012-06-01T17:55:02.353 回答
21

对于它的价值,iOS7 放弃了对datetime您需要使用datetime-local接受时区部分的支持(这是有道理的)。

不起作用(无论如何iOS):

 <input type="datetime-local" value="2000-01-01T00:00:00+05:00" />

作品:

<input type="datetime-local" value="2000-01-01T00:00:00" />

PHP 的价值(Windows 安全):

strftime('%Y-%m-%dT%H:%M:%S', strtotime($my_datetime_input))
于 2013-11-08T21:58:25.253 回答
16

本文似乎显示了可接受的有效类型

<time>2009-11-13</time>
 <!-- without @datetime content must be a valid date, time, or precise datetime -->
<time datetime="2009-11-13">13<sup>th</sup> November</time>
 <!-- when using @datetime the content can be anything relevant -->
<time datetime="20:00">starting at 8pm</time>
 <!-- time example -->
<time datetime="2009-11-13T20:00+00:00">8pm on my birthday</time>
 <!-- datetime with time-zone example -->
<time datetime="2009-11-13T20:00Z">8pm on my birthday</time>
 <!-- datetime with time-zone “Z” -->

这个涵盖了在<input>现场使用它:

<input type="date" name="d" min="2011-08-01" max="2011-08-15">这个 HTML5 输入类型“日期”的示例结合属性 min 和 max 显示了我们如何限制用户可以输入的日期。属性 min 和 max 不相互依赖,可以独立使用。

<input type="time" name="t" value="12:00">HTML5 输入类型“时间”允许用户选择以 24 小时格式显示的相应时间。如果我们不包括默认值“12:00”,则时间将设置为用户本地计算机的时间。

<input type="week" name="w">HTML5 输入类型 week 将显示由“W”表示的数字版本以及相应的年份。

<input type="month" name="m">HTML5 输入类型 month 完全符合您的预期。它显示月份。准确地说,它显示月份的数字版本以及年份。

<input type="datetime" name="dt">HTML5 输入类型 Datetime 显示 UTC 日期和时间代码。用户可以以一分钟为增量向前或向后更改时间步长。如果您希望显示用户的本地日期和时间,您将需要使用下一个示例 datetime-local

<input type="datetime-local" name="dtl" step="7200">由于 datetime 每次步进一分钟,您可能希望通过使用属性“step”来更改默认增量。在下面的示例中,我们将通过将属性 step 设置为 7200(60 秒 X 60 分钟 X 2)将其增加两个小时。

于 2012-06-01T17:36:53.807 回答
12

这真是浪费了我一个小时的时间。对于热心的海狸,以下格式对我有用:

<input type="datetime-local" name="to" id="to" value="2014-12-08T15:43:00">

规范让我有点困惑,它说要使用 RFC 3339,但是在我的 PHP 服务器上,当我使用 DATE_RFC3339 格式时,它没有初始化我的 hmtl 输入:( DATE_RFC3339 的 PHP 常量是“Ymd\TH:i:sP “在撰写本文时,您应该摆脱时区信息是有道理的(我们使用的是 datetime-LOCAL,伙计们)。所以对我有用的格式是:

"Y-m-d\TH:i:s"

我认为能够在 datepicker 显示日期时设置 datepicker 的值更直观,但我猜它的显示方式因浏览器而异。

于 2014-12-08T22:00:07.473 回答
4

这适用于设置 INPUT 的值:

strftime('%Y-%m-%dT%H:%M:%S', time())
于 2016-11-16T09:47:12.927 回答
1

对于那些寻找这个的人来说,那个正确地显示为 HTML5-Tag:

<input type="datetime" name="somedatafield" value="2011-12-21T11:33:23Z" />
于 2013-04-16T13:18:20.370 回答
-2

我用momentjs

moment(value).format("YYYY-MM-DDTHH:mm:ss")
于 2019-03-02T10:54:01.563 回答