2012-04-14 106 views
3

我在iPhone上使用HTML 5格式。这种形式具有类似于下面的输入元件:当用户点击这个字段HTML 5 - 在iOS上输入格式的日期格式

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

,将出现的iOS日期选择器。用户选择日期后,会将日期显示为如下所示:2012年4月14日。

我的问题是,是否有格式化此日期的方法,使其看起来像04-14-2012在文本框中?或者,最好有一种将iOS日期格式转换为JavaScript Date对象的简单方法?

+2

[指定HTML5输入类型的值输出= date?](http:// stackoverflow。com/questions/3496241 /指定-HTML5-input-type-date-date-date-date) – epascarello 2012-04-14 12:19:17

回答

3

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

W3C spec & RFC3339

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

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

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

你是对的。但iOS总是要做那件事。 – 2012-04-14 13:02:14

2

有两种格式在作怪:

  • 显示格式
  • 内部格式暴露于JavaScript和发送到服务器

你不能改变显示格式。由浏览器决定如何将日期呈现给用户(实际上它由系统的语言环境决定)。

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

0

下面应该这样做。

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

为什么你期望后端是用PHP编写的? – 2012-10-06 17:34:09

0

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

在伪码:

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

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