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

46 views (last 30 days)
koji fukumoto
koji fukumoto on 16 Oct 2018
Commented: koji fukumoto on 16 Oct 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でそのようなことはできますでしょうか?
(ちなみに、求める精度はミリ秒です)
よろしくお願いいたします。

Accepted Answer

koji fukumoto
koji fukumoto on 16 Oct 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"

More Answers (1)

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

Sign in to comment.

Categories

Find more on 日付と時刻 in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!