1

形式のテキスト文字列として日付があります -

16 October 2012
08 October 2012
04 October 2012

それらをMySQLの「日付」に適した形式に変換したいと思います。

私は次の実装を持っています -

$fixed = date("Y-m-d", strtotime($date));

すべての日付を --

1969-12-31
4

4 に答える 4

2

strtotime受け入れ可能な形式のリストがありますが、使用しているものは1つではありません。

あなたがしたいstrptime()

$d = strptime($date, '%d %B %Y');
$fixed = date("Y-m-d", mktime(0,0,0,$d['tm_mon'],$d['tm_mday'],$d['tm_year']));
于 2012-10-24T17:38:28.683 に答える
1

PHP 日付関数を使用して結果を取得する他の回答とは別に、それらを回避し、特定のケースでより高速なアプローチを使用する場合は、次のカスタム関数を使用できます。

function mysql_date($d) {
    $m = array('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');
    $ex = explode(' ',$d);
    $mon = array_search( strtolower( substr($ex[1],0,3) ) ,$m) + 1;
    return $ex[2] . '-' . $mon . '-' . $ex[0];
}

$date='16 October 2012';
echo mysql_date($date); //echoes '2012-10-16'
于 2012-10-24T18:34:16.110 に答える
0

これは PHP 5.3 以降で動作するはずです:

$date='16 October 2012';
$a = date_parse_from_format($date, '%d %F %Y');
$atime = mktime(0, 0, 0, $a['month'], $a['day'], $a['year']);
echo date("Y-m-d", $atime);

古いバージョンの PHP を使用している場合は、PHP が Windows にstrptime()実装されていないため、PHP が Windows に実装されていないことに注意してください。推奨される方法はdate_parse_from_format()、上記の提案のように使用することです。strptime()ページから抽出された警告を参照してください。

注: この関数は、Windows プラットフォームでは実装されていません。

注: 内部的に、この関数は、システムの C ライブラリによって提供される strptime() 関数を呼び出します。この関数は、異なるオペレーティング システム間で著しく異なる動作を示すことがあります。これらの問題の影響を受けない date_parse_from_format() の使用は、PHP 5.3.0 以降で推奨されます。

したがって、5.3 より古い PHP を使用していて、それが Windows で実行されない場合は、次のコードを使用できます。

$date='16 October 2012';
$a = strptime($date, '%d %B %Y');
$atime = mktime(0, 0, 0, $a['tm_mon'], $a['tm_mday'], $a['tm_year']);
echo date("Y-m-d", $atime);
于 2012-10-24T18:13:18.980 に答える
0

これにはPHP のDateTimeクラスを使用ます。

function sqlDateFromLongDate($input) {
    $dateObj = DateTime::createFromFormat($input,'d F Y');
    return $dateObj->format('Y-m-d');
}

print sqlDateFromLongDate('08 October 2012');

それが役立つことを願っています。

**注: このソリューションには PHP 5.3 以降が必要です。(ただし、これが現在サポートされている最小バージョンであることにも注意してください。それより前のバージョンを使用している場合は、php 5.2 は 2 年近く前にサポートが終了していることに注意してください。アップグレードの時期です)。

于 2012-10-25T16:07:39.153 に答える