strtotime:检查时间

Ric*_*ard 5 php date strtotime

我有一个凭证系统,我可以用时间输入日期或日期.应该允许所有有效格式,例如:

  • 2016年1月1日
  • 01.01.2016 00:00:00

如果我有代金券的开始日期,我没问题,但如果我有结束日期,这是一个问题.我strtotime用来将用户输入转换为UNIX时间戳.

如果您只输入日期作为结束日期,则应该是使用日期的结束日期.像这样:

01.01.2016 -> 01.01.2016 23:59:59 -> 1451689199
Run Code Online (Sandbox Code Playgroud)

但是 - 这是我的问题 - strtotime当然为01.01.2016和返回相同的时间戳01.01.2016 00:00:00.当用户输入时,当然应该使用这个时间.

01.01.2016
1451602800
-> should go to 1451689199

01.01.2016 00:00:00
1451602800
-> is correct

01.01.2016 23:59:59
1451689199
-> is correct
Run Code Online (Sandbox Code Playgroud)

我需要有可能检查字符串 - 由strtotime- 转换- 是否有时间显式.我搜索了一个没有成功的函数,即使是DateTime类没有这方法(hasTime()或类似的东西).

正如我之前所说,strtotime此功能也应支持所有日期/时间格式支持.

这个问题不重复!我想检查是否有明确指定的时间.应该是重复的问题是PHP初学者的基本问题,与此问题完全无关!

Tot*_*oto 1

我会在调用 strtotime 之前测试字符串的长度并添加23:59:59

$dates = array('01.01.2016','01.01.2016 23:59:59','01.01.2016 10:25:30');
foreach($dates as $date) {
    echo "date=$date\n";
    if (strlen($date) > 10) {
        echo strtotime($date),"\n";
    } else {
        echo strtotime($date . ' 23:59:59'),"\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

date=01.01.2016
1451689199
date=01.01.2016 23:59:59
1451689199
date=01.01.2016 10:25:30
1451640330
Run Code Online (Sandbox Code Playgroud)