-2

特定のタイムスタンプで期間 (日、週、月) を取得するにはどうすればよいですか? デートはしたくない。秒数に基づいて次の期間が必要です。

そのためのPHPネイティブ関数はありますか?

例:

$period = getTimeperiod( 15638400 );

私の試み:秒を確認して数えることができました:

if x <= 60 => min
if x <= 60*60 => hour
if x <= 60*60*24 => day
...

編集:

期間とは、分、時間、日、週のいずれかを意味します ... 上記のように... ?! したがって、タイムスタンプに対応する期間だけが必要です。

例: ( day = 86400 secs) のタイムスタンプはgetTimeperiod( 85000 )「日」である必要があります。

4

3 に答える 3

0

私はそれをそのように解決しました:

  /*
  seconds     0
  minutes     1
  hours       2
  days        3
  week        4
  month       5
  year        6
  decade      7
  century     8
  millenium   9
  */

  $arTimes = array(
     0 => 1,
     1 => 60,
     2 => 60*60,
     3 => 60*60*24,
     4 => 60*60*24*7,
     5 => 60*60*24*7*4,
     6 => 60*60*24*7*4*12,
     7 => 60*60*24*7*4*12*10,
     8 => 60*60*24*7*4*12*10*10,
     9 => 60*60*24*7*4*12*10*10*10
  );

  $nDiff = strtotime( $nTo ) - strtotime( $nFrom );

  switch( $nDiff )
  {
     // check difference and time period
     case $nDiff <= $arTimes[ 1 ]:
        $nGranularity = 0;
        break;
     ...
  }
于 2013-05-23T09:53:06.713 に答える
0

しかし、これは間隔オブジェクト (期間) を返す正しいパスにありますか? DateIntervalを指摘してくれた@SimonSimCityに感謝します。あなたが私を導くなら、私は答えを改善することができます.

<?php 
$timestamp = 15638400;
echo "The timestamp $timestamp is " . date("Y-m-d H:i:s", 15638400) . "<br \>";

echo "<pre>";
print_r  (DateInterval::createFromDateString(date("Y \\y\\e\\a\\r\\s m \\m\\o\\n\\t\\h\\s d \\d\\a\\y\\s\\ H \\h\\o\\u\\r\\s i \\m\\i\\n\\u\\t\\e\\s s \\s\\e\\c\\o\\n\\d\\s", 15638400 ) ) );
echo "</pre>"
?>

出力中

The timestamp 15638400 is 1970-07-01 00:00:00
DateInterval Object
(
    [y] => 1970
    [m] => 7
    [d] => 1
    [h] => 0
    [i] => 0
    [s] => 0
    [invert] => 0
    [days] => 0
)
于 2013-05-22T12:09:37.977 に答える