0

次のような日付があります。

20 November 06:10
12 November 08:12
10 October 13:23

過去 6 か月の間にすべてがありました。今、strtotime()それらを取得したいのですが、それらはすべて未完成です (年の不足) strtotime()。それらを可能にするプロセスを作成するにはどうすればよいですか?

4

3 に答える 3

0

これを試して:

$dates = array("10 October 13:23", "12 November 08:12", "10 October 13:23");

    foreach($dates as $d){
        $exploded = explode(" ", $d);
        $newDate = array_slice($exploded, 0,2,true)+array(2=>"2012")+array(3 => $exploded[2]);

        //print_r($newDate);
        $time = strtotime(implode($newDate));
        echo $time."<br/>";
    }

私が得た出力は次のとおりです。

1349868180
1352704320
1349868180

ロジックは次のとおりです。

年が足りないので、日付を配列に分解してスライスし、年 (+array(2=>"2012")部分) を挿入し、内破で再度接着してから、strtotime を実行しました。

これは今年のみ機能するため、このロジックを使用してすべての日付に年を追加できます。そうしないと、将来、異なる年の日付をフィルター処理する方法がまったくなくなります。

  • 日付をすべてのループの配列に追加しました。すべての日付が保存されている場所に応じて、ループを他の方法で使用できます。たとえば、それらがデータベースにある場合は、代わりにあるwhile($row = mysqli_fetch_assoc($result))部分にスクリプトを含めることが$dできます$row['date']
于 2012-11-20T09:36:36.713 に答える
0

strtotime の代わりに、 DateTimeクラスとそのcreateFromFormatおよびgetTimeStampメソッドを使用する必要があります。

于 2012-11-20T09:23:29.617 に答える
0
print_r(date_parse_from_format("d F H:i", '20 November 06:10'));

あなたにあげる:

Array
(
    [year] => 
    [month] => 11
    [day] => 20
    [hour] => 6
    [minute] => 10
    [second] => 0
    [fraction] => 
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 
)
于 2012-11-20T09:40:11.463 に答える