1

PHPで現在の時刻とfilemtimeの差を取得しようとしています。

time と filemtime は正しい値を返すように見えます。これは、date 関数に適用すると、これらの値が正しい日付を出力するためです。time() 関数と filemtime の差は、date 関数によると 1 時間です。ただし、返されたタイムスタンプ値の差を取得しようとすると、差は 215 です。たとえば、以下を参照してください。

現在の時刻 = 1339599628、date() 関数は 13-06-2012 16:06:28 00 を示し、ファイル変更時刻 = 1339599413、date() 関数は 13-06-2012 15:06:30 30 を示します。

これは正しいようですが、1 時間は 3600 秒であるため、これらの日付の秒単位の差を確認する方法がわかりませんが、差は 215 しかありません。

また、次のタイムスタンプ値を試しました: 1339599599 = 13-06-2012 15:06:59 59 1339599600 = 13-06-2012 16:06:00 00

したがって、最初のタイムスタンプ値は 1 ずつ増加しますが、日付は 1 時間の差を与えます。

何か案は?

4

4 に答える 4

3

タイムゾーンの違いに問題があるようです。gmdate関数を調べてみてください。

または、これらのタイムスタンプを取得する前に、 を呼び出してdate_default_timezone_set('UTC')ください。

于 2012-06-14T08:16:14.957 に答える
1

私の場合、time() と filemtime() の時間差は 51 秒でした。何が原因なのかわかりませんが、回避策を見つけました。ファイルを作成するときに使用しますtouch($file, time())。これで、作成されたファイルの作成時刻が time() と「同期」して設定されます。

于 2014-05-19T20:17:24.390 に答える
0

私は最近同じ問題を抱えていました。システム側を確認したところ、システム時刻と、最終変更時刻を示すstatコマンドによって提供される時刻に違いがあることがわかりました。

-bash$ date;touch test;stat test;date
Sat Aug 22 08:06:35 BRT 2015
  File: `test'
  Size: 0               Blocks: 1          IO Block: 32768  regular empty file
Device: 13h/19d Inode: 25189989    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (/)   Gid: (/)
Access: 2015-08-22 08:07:29.968227010 -0300
Modify: 2015-08-22 08:07:29.968227064 -0300
Change: 2015-08-22 08:07:29.968238305 -0300
Sat Aug 22 08:06:35 BRT 2015

私の場合の差は53秒です。

私がテストした他のマシンでは、この違いは見られませんでした。

ホスティング マシンでテスト済み。

于 2015-08-22T11:24:11.823 に答える
0

あなたの質問がよくわかりません... time と filemtime の両方がタイムスタンプを返します。

maximumOne - maximumOne = 差分 (秒単位)。それ以上のものはないはずです。

于 2012-06-14T08:14:23.623 に答える