11

如果我有以下字符串:

"2013-10-28"

DateTime当我使用以下函数转换为 a 时:

new \DateTime("2013-10-28");

它总是给我一个DateTime未设置的时间。

我想要两个DateTime :

  • 一个标志着一天的开始,意思是在00:00:00
  • 另一个DateTime在同一日期但在一天结束时23:59:59

给定上面的字符串,我该怎么做?

4

3 回答 3

36

使用DateTime::setTime

$d = new \DateTime("2013-10-28");
$d->setTime(23, 59, 59);
于 2013-10-29T09:55:12.190 回答
9

查看所有可能的复合格式

MySQL 格式对于您的用例应该是最简单的:

new \DateTime("2013-10-28 00:00:00");
new \DateTime("2013-10-28 23:59:59");
于 2013-10-29T09:50:17.233 回答
0

你可以试试这个:

public static Date getDayStartTimeOfTheDate(Date date){
        try {
          Calendar c = Calendar.getInstance();
         c.setTime(date);
         c.set(Calendar.AM_PM, 0);
         c.set(Calendar.HOUR, 0);
         c.set(Calendar.MINUTE, 0);
         c.set(Calendar.SECOND, 0);
         c.set(Calendar.MILLISECOND, 0);

        return parseDate(format(c.getTime()));
      } catch (ParseException e) {

    }
}

对于结束时间,您可以根据上述逻辑编写方法。

于 2013-10-29T09:51:16.720 回答