我是如何创建一个简单的IF-statement
来对31-10-2017
中的12-01-2016
或1511431687
进行排序的?{/ p>
我正在从设定日期转换为使用unix时间戳,并需要一个解决方案来解决什么是什么。我想以人类可读的格式显示日期(天/月/年)。
所以我有一个$data
在循环中。它从平面文件中提取日期。旧的东西刚刚将日期保存为日期。例如31-10-2017
(完全相同)。
现在我使用unix时间戳。例如1511431687
。
我看到人们使用了一个简单的IF语句,但我不能使用它,因为它们都是10个单位长。否则本来会运作良好。
$data = // either a timestamp, or a date in this format: 31-10-2017
if (strlen($data) === 10) // it's a timestamp
$data = date("d-m-Y H:i:s", $data);
答案 0 :(得分:3)
也许天真,但解决方案可能是检查$ data是否有数值。
if (is_numeric($data)) { // it's a timestamp
$data = date("d-m-Y H:i:s", (int) $data);
}
答案 1 :(得分:0)
您有几种选择:
ctype_digit
检查字符串是否都是数字(可能是UNIX时间戳)preg_match('/^\d{1,2}-\d{1,2}-\d{4}$/', $date)
(d-m-Y或m-d-Y日期)checkdate
确认您认为自己确定的日期是否有效根据您期望的格式数量,我会按照这个逻辑顺序尝试:
ctype_digit
,请检查值是否在预期范围内
1000
(时间戳以毫秒为单位)checkdate
确认值是合理的DateTime
对象转换为标准化内部表示