Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中将字符串转换为日期_Php_String_Unix Timestamp - Fatal编程技术网

在PHP中将字符串转换为日期

在PHP中将字符串转换为日期,php,string,unix-timestamp,Php,String,Unix Timestamp,如何将此字符串05/Feb/2010:14:00:01转换为unixtime 您应该查看。使用strotime功能: 示例: $date = "25 december 2009"; $my_date = date('m/d/y', strtotime($date)); echo $my_date; 对于PHP5.3,这应该是可行的。你可能需要处理传递$dateInfo['Isdst'],反正这对我不起作用 $date = '05/Feb/2010:14:00:01'; $dateInfo

如何将此字符串
05/Feb/2010:14:00:01
转换为unixtime

您应该查看。

使用
strotime
功能:

示例:

 $date = "25 december 2009";
 $my_date = date('m/d/y', strtotime($date));
 echo $my_date;

对于PHP5.3,这应该是可行的。你可能需要处理传递$dateInfo['Isdst'],反正这对我不起作用

$date = '05/Feb/2010:14:00:01';
$dateInfo = date_parse_from_format('d/M/Y:H:i:s', $date);
$unixTimestamp = mktime(
    $dateInfo['hour'], $dateInfo['minute'], $dateInfo['second'],
    $dateInfo['month'], $dateInfo['day'], $dateInfo['year'],
    $dateInfo['is_dst']
);
在以前的版本中,这应该可以工作

$date = '05/Feb/2010:14:00:01';
$format = '@^(?P<day>\d{2})/(?P<month>[A-Z][a-z]{2})/(?P<year>\d{4}):(?P<hour>\d{2}):(?P<minute>\d{2}):(?P<second>\d{2})$@';
preg_match($format, $date, $dateInfo);
$unixTimestamp = mktime(
    $dateInfo['hour'], $dateInfo['minute'], $dateInfo['second'],
    date('n', strtotime($dateInfo['month'])), $dateInfo['day'], $dateInfo['year'],
    date('I')
);

或者substr,或者explode,不管你想解析哪个字符串。

简单的exploding应该可以做到:

$monthNamesToInt = array('Jan'=>1,'Feb'=>2, 'Mar'=>3 /*, [...]*/ );
$datetime = '05/Feb/2010:14:00:01';
list($date,$hour,$minute,$second) = explode(':',$datetime);
list($day,$month,$year) = explode('/',$date);

$unixtime = mktime((int)$hour, (int)$minute, (int)$second, $monthNamesToInt[$month], (int)$day, (int)$year);

如果您愿意,请使用该课程,尝试以下方法:

$new_date=date('d-m-Y', strtotime($date));

这里是日期字符串,根据需要的格式在->format()中指定格式说明符

如果它是一个您信任的字符串,这意味着您事先已经检查过它,那么以下操作也可以使用

$date = new DateTime('2015-03-27');

@streetparade:我的意思是,例如,你不能将日期的各种字符串传递给它,例如“2010年12月28日”。值得注意的是,Strottime还支持诸如“昨天”或“下周的这一天”之类的关键词和短语;p您的字符串可能与strotime()不兼容;你可能需要先格式化一下,它根本不起作用。它说从格式中解析日期是未定义的。这是由于冗余而被否决的。答案本身是正确的,但之前是由Sarfraz在2月8日提供的。DateTime的问题是它会转换时区。
$d="05/Feb/2010:14:00:01";
$dr= date_create_from_format('d/M/Y:H:i:s', $d);
echo $dr->format('Y-m-d H:i:s');
$date = new DateTime('2015-03-27');