0

私はそのような日時文字列を持っており、14/04/2014 4:57:16 PMカーボン日時を使用して作業しています。

しかし、私がこれをやろうとするとすぐに

$dt = Carbon::createFromTimestampUTC($encDateTime);

ただし、解析エラーが発生します: DateTime::__construct(): 位置 3 (/) で時刻文字列 (@14/04/2014 5:03:45 PM) の解析に失敗しました: 予期しない文字。

Udpate: 私はこれをやってみました:

$date = DateTime::createFromFormat('d/m/Y H:i A', $encDateTime);
dd($date->format('Y-m-d H:i:s'));

次のエラー Call to a member function format() on a non-object が表示されます

これで私を助けてもらえますか?

ありがとう

4

4 に答える 4

9

日付文字列の末尾にスペースが含まれているためDateTime::createFromFormat()、解析に失敗します。先頭および/または末尾から余分な空白を削除するには、 を使用できますtrim()

また、最初は を使用してHいましたが、これは先頭にゼロを付けた 24 時間形式です。この場合、12 時間制のように見えるので、g代わりに を使用します (これhも機能します)。

以下が機能するはずです。

$date = DateTime::createFromFormat('d/m/Y g:i:s A', trim($encDateTime));

このようなエラーが発生した場合は、常にvar_dump(). そうすれば、変数に自分の考えが含まれているかどうかを確認できます。

于 2014-04-14T17:25:16.907 に答える
7

解析エラーが発生すると、createFromFormatDateTimeの静的メソッドが返されます。NULL指定された ( ) の形式d/m/Y H:i Aが間違っていました。したがって、エラー「非オブジェクトのメンバー関数への呼び出しformat()」。

次のように、非標準の時間文字列から DateTime オブジェクトを作成できます。

$time = '14/04/2014 4:57:16 PM';
$date = Carbon\Carbon::createFromFormat('d/m/Y g:i:s A', $time);

使用可能なさまざまな形式の文字とその説明については、 のドキュメントを参照してdate()ください。

于 2014-04-14T17:14:18.110 に答える
5

カーボンについては何も知りませんが、これはうまくいきます。createFromFormat メソッドで h の代わりに 2 桁 (H) を使用していました (編集: g はまったく同じものです)。

$encDateTime = "14/04/2014 4:57:16 PM";

$date1 = DateTime::createFromFormat('d/m/Y h:i:s A', trim($encDateTime));
echo $date1->format('Y-m-d H:i:s');

結果:

2014-04-14 16:57:16
于 2014-04-14T17:24:50.400 に答える