31

次の形式で日付を出力する変数があります。

201308131830

2013 年 8 月 13 日 - 18:30

これを使用して曜日名を取得していますが、間違った日になっています:

$dayname = date('D', strtotime($longdate));

私が間違っていることは何ですか?

4

9 に答える 9

36

これは、日付と時刻を非標準の形式で保存すると発生します。彼らと一緒に働くことは問題になります。

$datetime = DateTime::createFromFormat('YmdHi', '201308131830');
echo $datetime->format('D');

実際に見る

于 2013-03-13T14:51:52.300 に答える
14

あなたのコードは私のために働く

$date = '15-12-2016';
$nameOfDay = date('D', strtotime($date));
echo $nameOfDay;

名前の完全なテキスト表現を好む場合は、D の代わりに l を使用します。

于 2016-12-18T01:31:21.527 に答える
4

あなたのコードは私のために働きます。

$input = 201308131830; 
echo date("Y-M-d H:i:s",strtotime($input)) . "\n";
echo date("D", strtotime($input)) . "\n";

出力:

2013-Aug-13 18:30:00
Tue

ただし、数値201308131830として渡すと、32 ビット整数で表現できるよりも 50 ~ 100 倍大きくなります。[システム固有の実装に依存] サーバー/PHP のバージョンが 64 ビット整数をサポートしていない場合、数値がオーバーフローし、おそらく負の数値として出力され、デフォルトで.date()Jan 1, 1970 00:00:00 GMT

このデータを取得するソースが何であれ、その日付を文字列として返し、それを文字列として保持していることを確認してください

于 2013-03-13T15:01:13.510 に答える
1

時刻の形式が PHP でサポートさstrtotimeれている日付と時刻の形式に含まれていないため、使用できません。

そのため、最初にcreateFromFormat 関数を使用して有効な日付形式を作成する必要があります。

//creating a valid date format
$newDate = DateTime::createFromFormat('YmdHi', $longdate);

//formating the date as we want
$finalDate = $newDate->format('D'); 
于 2013-03-13T14:52:20.353 に答える