可能重复:
PHP日期字符串格式
我想转换从日期dd/mm/yyyy => yyyy-mm-dd
。 我已经使用了mktime()函数等功能,但我似乎无法使它工作。 我已成功地explode
使用原来的日期'/'
作为分隔符,但我没有成功改变格式和交换的'/'
与'-'
。
任何帮助将不胜感激。
可能重复:
PHP日期字符串格式
我想转换从日期dd/mm/yyyy => yyyy-mm-dd
。 我已经使用了mktime()函数等功能,但我似乎无法使它工作。 我已成功地explode
使用原来的日期'/'
作为分隔符,但我没有成功改变格式和交换的'/'
与'-'
。
任何帮助将不胜感激。
在日期
m/d/y
或dmy
格式通过查看在各个组件之间的分离器消除歧义:如果隔板是斜线(/
),那么美国m/d/y
假设; 而如果隔板为破折号(-
或点.
),则欧洲dmy
假定格式。 检查更多这里 。
使用默认的日期功能。
$var = "20/04/2012";
echo date("Y-m-d", strtotime($var) );
编辑我只是测试它,不知何故,PHP不能很好地使用dd / mm / yyyy格式工作。 这里是另一种解决方案。
$var = '20/04/2012';
$date = str_replace('/', '-', $var);
echo date('Y-m-d', strtotime($date));
尝试使用DateTime::createFromFormat
$date = DateTime::createFromFormat('d/m/Y', "24/04/2012");
echo $date->format('Y-m-d');
产量
2012-04-24
下面是不使用日期另一种解决方案()。 没有那么聪明:)
$var = '20/04/2012';
echo implode("-", array_reverse(explode("/", $var)));
做这个:
date('Y-m-d', strtotime('dd/mm/yyyy'));
但要确保“DD / MM / YYYY”是实际日期。
我可以看到伟大的答案,所以没有必要在这里重复,所以我想提供一些建议:
我会建议使用Unix时间戳整数,而不是人类可读的日期格式来内部处理时间,然后使用PHP的date()
函数将时间戳值转换成显示给用户的人类可读的日期格式。 下面是它应该如何进行粗例子:
// Get unix timestamp in seconds
$current_time = date();
// Or if you need millisecond precision
// Get unix timestamp in milliseconds
$current_time = microtime(true);
然后使用$current_time
根据需要在您的应用程序(存储,增加或减少等),那么当你需要显示它的日期值给你的用户,你可以使用date()
来指定所需的日期格式:
// Display a human-readable date format
echo date('d-m-Y', $current_time);
这样,你会避免很多头痛处理日期格式,转换和时区,为您的日期将在一个标准化的格式(UNIX时间戳),其结构紧凑,时区无关的(总是UTC),并得到广泛支持的编程语言和数据库。