2017-04-27 83 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