2017-04-27 84 views
0

我在HTML5 type="date"字段中以網頁形式提供用戶輸入。然後這個輸入值(與其他人一起)被保存爲MySQL數據庫中的JSON文檔。現在我需要提取該日期並將其打印到生成的具有給定格式的MS Word文檔中。大!但正如您所知,HTML5日期字段接受日期格式取決於用戶的地區,設置等。我注意到,在不同瀏覽器中輸入的所有日期都以「Y-m-d」格式保存在數據庫中。這在所有情況下都是如此嗎?我可以依賴這種格式以備將來使用嗎?找不到有關該主題的任何規格信息。 如果可以而不是依賴「Y-m-d」格式是否有任何PHP庫用於「猜測」日期格式?用PHP猜測日期格式

回答

1

首先,爲什麼要將JSON文檔保存在MySQL數據庫中,而不是一些更合適的文檔數據庫(例如MongoDB)?

無論如何,根據thisthis顯示的日期格式不同於實際值。 HTTP請求中的日期值將始終格式化爲yyyy-mm-dd,這是ISO 8601格式,我想它應該是可靠的。

在PHP中,您可以使用DateTime類來處理日期字符串。這個類支持許多不同的日期格式。例如:

// timezone is set based on your system preferences if not set 
$date1 = new DateTime('2017-04-27', new DateTimeZone('+00:00')); 
$date2 = new DateTime('27 April 2017', new DateTimeZone('+00:00')); 
$date3 = new DateTime('2017-04-27T00:00:00+00:00'); 

var_dump($date1 == $date2); // bool(true) 
var_dump($date1 == $date3); // bool(true) 

如果日期字符串是錯誤的,將拋出一個異常:

try { 
    $date = new DateTime('2017 4 27'); 
} catch (Exception $e) { 
    echo $e->getMessage(); // DateTime::__construct(): Failed to parse time string (2017 4 27) at position 5 (4): Unexpected character 
} 

所以,你的情況,你可以,你這個類的日期驗證和比正確的輸出格式,如:

$dateString = '2017-04-27T14:22:11+00:00'; 
try { 
    $date = new DateTime($dateString); 
    echo $date->format('Y-m-d'); // 2017-04-27 
} catch (Exception $e) { 
    // do something else 
} 
+0

感謝Lukas指出MDN和Google Developers。看起來我搜索得太少,無法自己找到答案。最重要的部分是請求總是以yyyy-mm-dd的形式發送。 – erop

+0

我的整個應用程序是依賴於MySQL的。但我需要構建用於輸入硬拷貝文檔屬性的動態表單。 MySQL 5.7.6中新增的JSON類型字段在擴展應用程序功能方面確實幫了我很大的忙。 – erop