1

1970 年より前の日付から現在の時刻までの間隔を表すタイムスタンプを秒単位で生成する方法を見つける方法を見つける必要があります。

X 人の誕生日 1969-01-02

当日 2013-08-23

私は試した

<?php
$then = new DateTime("1969-01-02");
$age = $then->getTimestamp();
?>

1970 年までのマイナスのタイムスタンプをくれました。

日差もやってみた

<?php
    $then = new DateTime("1969-01-02");
    $now = new DateTime("now");
    $age = $then->diff($now);
?>

しかし、日付の違いを使用できる秒のタイムスタンプに変換する方法がわかりません。何か助けてください。

私が尋ねる理由は、1970 年以降の日付でタイムスタンプを実行すると、現在と比べて正常に動作し、期待される出力が得られるからです。しかし、誰かの誕生日が 1970 年より前の場合、生年月日のタイムスタンプを 1970 年まで計算するだけであり、これは完全に不正確です。そのため、生年月日が 1970 年より前の人の年齢のタイムスタンプを秒単位で取得する方法を見つける必要があります。

4

1 に答える 1

0

それが期待される動作です。

UNIX timestamp(閏秒を考慮していない)からの秒数ですJan 1 1970それ以前の日付の場合return負の数になります。

はい、計算したい場合は、years, months and daysこれを試してください。

<?php
    $then = new DateTime("1969-01-02");
    $now = new DateTime('now');
    $age = $then->diff($now);
    echo $age->format('%Y years, %m months,%d days');
?>

更新しました、

<?php
    $then = strtotime("1969-01-02");
    $now = strtotime('now');

    $age=$now-$then;
    // Above is your final time stamp, created by the difference of two dates

    $diff = abs($age);
    $years = floor($diff / (365*60*60*24));
    $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
    $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
    printf("%d years, %d months, %d days\n", $years, $months, $days);
    // Outputs-> 44 years, 8 months, 4 days 
?>
于 2013-08-23T11:03:46.060 に答える