13

How can I convert this string 05/Feb/2010:14:00:01 to unixtime ?

4

9 に答える 9

52

strtotime関数を使用します。

例:

 $date = "25 december 2009";
 $my_date = date('m/d/y', strtotime($date));
 echo $my_date;
于 2010-02-08T16:04:15.560 に答える
20

PHP 5.3の場合、これは機能するはずです。$ dateInfo ['is_dst']を渡すことをいじる必要があるかもしれませんが、とにかく私のために働いていませんでした。

$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')
);

正規表現が気に入らないかもしれません。もちろん、注釈を付けることもできますが、誰もがそれを気に入っているわけではありません。したがって、これは代替手段です。

$day = $date[0].$date[1];
$month = date('n', strtotime($date[3].$date[4].$date[5]));
$year = $date[7].$date[8].$date[9].$date[10];
$hour = $date[12].$date[13];
$minute = $date[15].$date[16];
$second = $date[18].$date[19];

または、その文字列を解析したいものは何でも、substr、またはexplodeします。

于 2010-02-08T17:24:51.060 に答える
4

strtotime() 関数を調べる必要があります。

于 2010-02-08T16:01:11.017 に答える
4

http://www.php.net/date_parse_from_format

于 2010-02-08T16:01:30.660 に答える
2
$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');

ここで日付文字列を取得し、必要なフォーマットに従って ->format() でフォーマット指定子を指定します

于 2013-01-09T18:36:30.000 に答える
1

単純な爆発でうまくいくはずです:

$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);
于 2010-02-08T17:30:40.360 に答える
0

これを試して:

$new_date=date('d-m-Y', strtotime($date));
于 2011-08-01T13:18:12.970 に答える
0

やる気がある場合は、DateTimeクラスを使用してください

于 2010-02-08T18:19:24.757 に答える
0

それが信頼できる文字列であり、事前に確認したことを意味する場合は、次の方法も機能します。

$date = new DateTime('2015-03-27');
于 2015-03-27T16:41:56.367 に答える