我试过
$dtToday = DateTime::createFromFormat('Y-m-d', date('Y-m-d'));
但是当我输出它时
die($dtToday->format('d M Y g:i:s a'));
我还有时间,例如“2011年1月22日下午4:53:59”。这是为什么?
更新
啊......很多人误解了我,我的坏,我忘了指出要点。我只用日期部分创建了日期,我不想要时间。所以我期待像这样的东西22 Jan 2011 12:00:00 am
答案 0 :(得分:15)
您可以致电->setTime(0, 0)
将时间部分清零:
$date = DateTime::createFromFormat('Y-m-d', '2011-01-22')->setTime(0, 0);
echo $date->format('d M Y g:i:s a');
// 22 Jan 2011 12:00:00 am
答案 1 :(得分:14)
请参阅DateTime::createFromFormat
的文档:
如果格式不包含该字符!然后, format 中未指定的部分生成时间将设置为当前系统时间。
如果您执行以下函数调用,您将获得预期的结果:
$dtToday = DateTime::createFromFormat('!Y-m-d', date('Y-m-d'));
答案 2 :(得分:6)
您可以将当前的unix时间戳作为第二个参数传递给日期函数
echo date("Y-m-d H:i:s",time());
答案 3 :(得分:5)
今天的开始时间戳
$today_start_ts = strtotime(date('Y-m-d', time()). '00:00:00');
答案 4 :(得分:1)
你得到的是“2011年1月22日下午4:53:59”,因为这些是你用日期格式化的规则:
d(日):22
M(月):1月
Y(年):2011年
g(12小时格式):4
我(分钟):53
s(秒):59
a(上午/下午):下午
你希望你的时间戳有更具体的格式。
我建议你在php date文档中找到一个高峰。
答案 5 :(得分:0)
是使用UTC还是什么?
我有一个PHP版本,在我执行date
相关操作时,如果没有先使用date_default_timezone_set
,则会出现错误。也许那会对你有帮助。
答案 6 :(得分:0)
从代码中删除此部分g:i:s a
。
现在,如果你想要一个根据你当地格式化的好日期,我建议你使用strftime()
功能。