为一天的开头和结尾创建DateTime字符串

时间:2013-10-29 09:47:00

标签: php

如果我有以下字符串:

"2013-10-28"

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

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

它总是给我DateTime时没有设置。

我想要两个 DateTime:

  • 标记当天开头的一个,意思是 00:00:00
  • 另一个DateTime,它位于同一天,但在一天结束时 23:59:59

如果给出上面的字符串,我该怎么做?

3 个答案:

答案 0 :(得分:14)

使用DateTime::setTime

$d = new \DateTime("2013-10-28");
$d->setTime(23, 59, 59);

答案 1 :(得分:8)

查看所有可能的compound formats

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

new \DateTime("2013-10-28 00:00:00");
new \DateTime("2013-10-28 23:59:59");

答案 2 :(得分:-1)

你可以试试这个:

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) {

    }
}

在结束时间你可以根据上述逻辑编写方法。