为了记录在案,我犯了一个错误,使用了类DateTime。这是一个很大的错误。虽然它有一些不错的功能,但不值得付出努力。我解释:
假设您有一个表单(带有日期选择器),并且您正在存储到数据库中,那么您有3种格式来表示日期。
- 在内部,变量的类型为 DateTime()
- 从视觉上看,向用户显示的变量是格式为 dd-mm-yyyy 或 mm-dd-yyyy 的字符串(这取决于区域设置)
- 在数据库中,存储的变量也是格式为 yy-mm-dd (ANSI) 的字符串
因此,我正在处理相同类型数据的3种不同表示形式
另外,假设您要序列化(json,xml等),它是序列化:
object(stdClass)#1 (1) {
["field1"]=>
object(DateTime)#2 (3) {
["date"]=>
string(26) "2018-12-02 09:14:09.216273"
["timezone_type"]=>
int(3)
["timezone"]=>
string(30) "America/Argentina/Buenos_Aires"
}
}
尝试序列化真的很痛苦。我的替代方案很简单,将任何时间日期存储为字符串,并且仅在需要时将其转换为DateTime。
object(stdClass)#3 (1) {
["field1"]=>
string(19) "2018-12-02 09:14:09"
}