2つのdatetim​eの時間差を、秒で取​得する方法

39 visualizzazioni (ultimi 30 giorni)
koji fukumoto
koji fukumoto il 16 Ott 2018
Commentato: koji fukumoto il 16 Ott 2018
2つのdatetimeの時間差を「秒」で取得する方法についてご相談させてください。 例えば
datetime1 = datetime(2020,08,16,15,00,00,000);
datetime2 = datetime(2021,10,16,15,00,01,234);
ans = between(datetime1, datetime2);
というようなコードだと、calendarDuration型で「1y 2mo 0h 0m 1.234s」という結果を得られます。
これでは、splitして計算するにしても閏年や「大の月・小の月」を考慮することができません。
datetimeを「1900年1月1日からの経過秒」に変換するなどができれば簡単に求められるのですが、 調べてみてもたどり着くことができませんでした。
MATLABでそのようなことはできますでしょうか?
(ちなみに、求める精度はミリ秒です)
よろしくお願いいたします。

Risposta accettata

koji fukumoto
koji fukumoto il 16 Ott 2018
自己レスになりますが、posixtimeを使ってできそうです。
datetime1 = datetime(2020,08,16,15,00,00,000);
datetime2 = datetime(2021,10,16,15,00,01,234);
ans = sprintf("%.3f", posixtime(datetime2) - posixtime(datetime1));
% 結果:ans = "36806401.234"

Più risposte (1)

Kazuya
Kazuya il 16 Ott 2018
seconds(datetime2-datetime1)
ans =
3.6806e+07
でも行けますね。
format long
seconds(datetime2-datetime1)
ans =
3.680640123400000e+07
  1 Commento
koji fukumoto
koji fukumoto il 16 Ott 2018
Kazuya様
確かにできますね! 勉強になりました、ありがとうございました。
seconds(datetime2-datetime1)
の方がシンプルで可読性も高そうですが、わずかに計算速度が遅いんですかね。。。
どちらの方法で実装するか、よく検討してみます。

Accedi per commentare.

Categorie

Scopri di più su 日付と時刻 in Help Center e File Exchange

Prodotti


Release

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!