我正在尝试为我的应用程序准备导入程序。 我是一个文件,非常简单但很大.txt。它有大约250k行,每行我需要将几列的日期格式改为' Y-m-d'。
我使用了strtotime()
和date()
,但是有一些问题,我开始使用类DateTime
,现在一切都很好,但导入它需要很多时间(比我使用strtotime
和date
时更多。)
//script do it every row
$date= new DateTime($values[1]);
$values[1]=$date->format('Y-m-d');
$date= new DateTime($values[2]);
$values[2]=$date->format('Y-m-d');
$values[]
我有字符串,例如Jul 1 2004 12:00AM
使用此DateTime
课程有更有效的方法吗?像定义$date
一样,然后只改变它的值?我谷歌并尝试使用DateTime
以多种方式做,但没有发现任何兴趣。
我仍然试图找出strtotime()
的错误,在某些情况下,它没有得到正确的约会并放入mysql表 - > 1969-12-31
。主要问题是我从外部提供商处获取此文件,并且每天都由cron运行。
看来文件中的某些日期格式非常奇怪:2013-01-30 15:04:30.717000000
,清理后,它开始正常工作,我可以使用strtotime,当然比DateTime更快。
答案 0 :(得分:0)
1359587070.717000
- >
select cast('2013-01-30 15:04:30.717000000' AS DATETIME(6));
和
2013-01-30 15:04:30.717000
- >
TIMESTAMP
也就是说,如果它注定要在MySQL数据库中,您可以将其存储为字符串,然后使用上面的代码转换为具有微秒精度的DATETIME
或cd /d C:\Program Files (x86)\Java\jre1.8.0_121\bin
。 / p>
答案 1 :(得分:-1)
$dt = new DateTime();
foreach($timestamps as $timestamp) {
$dt->setTimestamp($timestamp);
var_dump($date->format('Y-m-d'));
}