4

我在 iPhone 上使用 HTML 5 表单。此表单具有如下输入元素:

<input id="birthdate" type="date" />

当用户单击此字段时,将出现 iOS 日期选择器。用户选择一个日期后,它会将日期放在显示为如下内容的字段中:2012 年 4 月 14 日。

我的问题是,有没有办法格式化这个日期,使它在文本框中看起来像 04-14-2012?或者,最好有一种直接的方法将 iOS 日期格式转换为 JavaScript Date 对象?

4

4 回答 4

4

我一直认为格式应该是YYYY-MM-DD.

W3C 规范RFC3339

无论如何,您可以使用 JavaScript 对其进行转换。

var dateInput = document.getElementById('birthdate');

dateInput.addEventListener('change', function() {
    dateInput.value = new Date(dateInput.value).toISOString().split('T')[0];
}, false);
于 2012-04-14T12:18:41.870 回答
2

不。

有两种格式在起作用:

  • 显示格式
  • 暴露给 JavaScript 并发送到服务器的内部格式

您无法更改显示格式。由浏览器决定如何向用户显示日期(实际上它由系统的区域设置决定)。

您也不能更改内部格式。无论浏览器/语言环境如何,它始终是ISO8601。

于 2012-04-14T13:59:46.403 回答
0

我同意@PorneL 的回答,但是,您可以做一些工作来模拟您想要的结果。我会规定这不是最好的方法。

在伪代码中:

  • 有两个输入,一个是日期类型,另一个是文本类型。
  • 使日期输入不可见或在侧面 1px x 1px,并使输入的大小与您想要的日期相同
  • 关注文本输入时,自动将焦点设置在相邻的日期输入上。
  • 此时,用户将编辑日期输入字段
  • 在更改日期字段时,获取值并使用您喜欢的任何格式将其插入到文本字段中。

同样,它可能不是最好的解决方案,但它可以以这种方式工作。

于 2012-11-21T19:14:43.447 回答
-1

以下应该做到这一点。

$dat = new DateTime($_POST['MyDATE']);
$new_format = $dat->format('Y-m-d');
于 2012-10-06T16:40:44.310 回答