2012-04-14 102 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在側面,並將輸入的大小設置爲您想要的日期的大小
  • 在關注文本輸入時,自動將焦點設置爲相鄰日期輸入。
  • 在這一點上,用戶將編輯日期輸入字段
  • 在更改日期字段時,抓住該值並將其插入文本字段中,使用任何您喜歡的格式。

再一次,它可能不是最好的解決方案,但它可以這樣工作。