Strtotime、Zend Framework、またはPear Packageの2つの日付間の違いを(秒単位で)取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2068033

  •  20-09-2019
  •  | 
  •  

質問

タイトルが述べているように、私は2(具体的には今からの日付と過去の日付の間)の間の違い(秒単位)を使用せずに取得したいです:sttotime、zendフレームワーク、または梨パッケージ。

私は自分の理由の詳細には触れたくありませんが、それの要点は、私は非常に古い日付で働いているということです(そして、私は年をとっています、私は0広告の前に話しています)。

返された結果は、与えられたテキストのタイムスタンプの2番目まで非常に正確であることが望ましいです。関数を呼び出す形式は、次のように似ている必要があります。

$bar = foo("YYYY-MM-DD HH:MM:SS", "AD"); // Where AD is Anno Domini 
$baz = foo("YYYY-MM-DD HH:MM:SS", "BC"); // Where BC is Before Christ

機能を提供する最初の人:

  • 高い読みやすさ
  • 魔法なし(三元演算子など)

彼らの答えは投票され、受け入れられます。彼らの名前は、コードを使用するソースファイルのヘッダーでクレジットされます。

編集(Re:名声):

誰かがヘッダーにクレジットされた名前を持っていることは悪く見え、編集できると言いました。私は、私が望む関数を利用するソースファイルのヘッダーについて話している。これは「名声」に関するものではありません。クレジットが期限が来る場所でクレジットを与えられるべきであり、私は誰が作品を執筆したかについて嘘をつく必要はありません。

編集(Re:精度):

私ができる限り最高の「メッセージの文字」を維持したい以外の理由はありません。

編集(Re:Magic):

魔法は、さまざまな人々にとって異なるものです。三元オペレーターに関しては、私があなたの意見を尊重しているので、私の意見を尊重してください。ありがとうございました。

編集(Re:古い日付と1秒の精度):

歴史の学生として、それは私には理にかなっています。 「1秒の精度」への欲求は絶対的ではありません。完璧は、達成可能ですが、必要ありません。

役に立ちましたか?

解決

各データタイムをパーツ(年、月、日付、時間、分、秒)に分割することをお勧めします。次に、各パートで、最新のものを差し引いたものを差し引いた基本的な合計を実行します(BCの日付は事実上負の数であることを思い出してください)。

あなたはそれを絶対に正しいものにすることは決してないでしょう。あなたは跳躍年を考慮する必要があります、そして、世紀の年が跳躍年であるかどうか、グレゴリオ/ジュリアンの日付などの切り替えなどを考慮する必要があります。

さらに、制限と高精度の要件についてのあなたの推論を知りたいです!

他のヒント

そのようなすべての問題については、カレンダーの計算(Google for it)を参照してください。

ああ、西暦0年目はありませんでした。カレンダーは紀元前1年から1ADになりました。むしろ、現代の西洋人は、世界のほとんどが他のシステムを使用していたときにカレンダーをそのように定義しています。

または、次のようなオンライン計算機に電話をかけます これです そして、多くの時間を節約します。

一部の言語とデータベースは算術日付を作成しますが、一部はそうではありません。日付をデータベースに保存する場合は、postgresを試してください。

pg=> SELECT now() - 'January 8, 52 BC'::DATE;
-----------------------------
 754835 days 20:27:31.223035

DBを使用しないと、もう少し問題が発生します。 PHPの日付算術は...まあ、私はそれについて話さないでください。 Pythonはとても良いですが、紀元前1年から始まります。

あなたは自分で転がさなければならないかもしれません...

タイムスタンプを減算してみませんか?

mktime(16,59,0,8,7,2001) - mktime(16,59,0,8,7,2000) =それらの間の秒

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top