如何为DateTime设置00:00:00

时间:2018-11-13 09:38:18

标签: php

我想得到的是

  • 今天的00:00:00
  • 每周开始日的00:00:00
  • 月份开始日的00:00:00
  • 年份开始日的00:00:00

所以我写代码,

$today = new \DateTime();
$weekStart = new \DateTime();
$monthStart = new \DateTime();
$yearStart = new \DateTime();

$weekStart->modify('last sunday');
$monthStart->modify('first day of this months');
$yearStart->modify('first day of this year');

print $today->format('Y-m-d h:i:s')."\n";
print $weekStart->format('Y-m-d h:i:s')."\n";
print $monthStart->format('Y-m-d h:i:s')."\n";
print $yearStart->format('Y-m-d h:i:s')."\n";

它给了我结果:

  

2018-11-13 09:34:02
  2018-11-11 12:00:00
  2018-11-01 09:34:02
  2018-11-01 09:34:02

我有两个问题。

如何制作每个DateTime 00:00:00?

我如何获得一年的第一天?

3 个答案:

答案 0 :(得分:4)

PHP的日期解析有些棘手。这是您所需的代码片段:

$today = new \DateTime('midnight');
$weekStart = new \DateTime('midnight last sunday');
$monthStart = new \DateTime('midnight first day of this month');
$yearStart = new \DateTime('midnight first day of january this year');


echo $today->format('Y-m-d H:i:s')."\n";
echo $weekStart->format('Y-m-d H:i:s')."\n";
echo $monthStart->format('Y-m-d H:i:s')."\n";
echo $yearStart->format('Y-m-d H:i:s')."\n";
    可以在构造时设置
  • DateTime值;无需致电DateTime::modify()

  • 添加midnight以将时间设置为00:00:00

  • first day this year在PHP中不起作用,您需要使用first day of january this year

参考:PHP Documentation of relative date formats.

答案 1 :(得分:2)

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return priceArray.count - 1
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "stickCell", for: indexPath) as! StcikCell
    cell.priceLabel.text = "\(priceArray[indexPath.row]) - \(priceArray[indexPath.row+1])"
    return cell
}

无需创建datetime()对象,使用上述代码即可获取时间为00:00:00的当前日期

答案 2 :(得分:1)

您可以尝试:

$date->setTime(0, 0, 0);