HTML 5 - iOS上的输入类型日期格式

时间:2012-04-14 12:09:17

标签: javascript html5

我在iPhone上使用HTML 5表单。此表单有一个输入元素,如下所示:

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

当用户点击此字段时,会显示iOS日期选择器。用户选择日期后,它会将字段中的日期显示为:2012年4月14日。

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

4 个答案:

答案 0 :(得分:4)

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

W3C spec&amp; RFC3339

无论如何,你可以用JavaScript转换它。

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

dateInput.addEventListener('change', function() {
    dateInput.value = new Date(dateInput.value).toISOString().split('T')[0];
}, false);

答案 1 :(得分:2)

没有

有两种格式:

  • 显示格式
  • 公开JavaScript的内部格式并发送到服务器

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

您也无法更改内部格式。无论浏览器/区域设置如何,总是 ISO8601。

答案 2 :(得分:0)

以下应该这样做。

$dat = new DateTime($_POST['MyDATE']);
$new_format = $dat->format('Y-m-d');

答案 3 :(得分:0)

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

在伪代码中:

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

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