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

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でそのようなことはできますでしょうか?
(ちなみに、求める精度はミリ秒です)
よろしくお願いいたします。

 Akzeptierte Antwort

koji fukumoto
koji fukumoto am 16 Okt. 2018

1 Stimme

自己レスになりますが、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"

Weitere Antworten (1)

Kazuya
Kazuya am 16 Okt. 2018

1 Stimme

seconds(datetime2-datetime1)
ans =
3.6806e+07
でも行けますね。
format long
seconds(datetime2-datetime1)
ans =
3.680640123400000e+07

1 Kommentar

koji fukumoto
koji fukumoto am 16 Okt. 2018
Kazuya様
確かにできますね! 勉強になりました、ありがとうございました。
seconds(datetime2-datetime1)
の方がシンプルで可読性も高そうですが、わずかに計算速度が遅いんですかね。。。
どちらの方法で実装するか、よく検討してみます。

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu 日付と時刻 finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2018a

Community Treasure Hunt

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

Start Hunting!