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

39 Ansichten (letzte 30 Tage)
koji fukumoto
koji fukumoto am 16 Okt. 2018
Kommentiert: koji fukumoto am 16 Okt. 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でそのようなことはできますでしょうか?
(ちなみに、求める精度はミリ秒です)
よろしくお願いいたします。

Akzeptierte Antwort

koji fukumoto
koji fukumoto am 16 Okt. 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"

Weitere Antworten (1)

Kazuya
Kazuya am 16 Okt. 2018
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 Help 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!