Adding seconds to get new date
조회 수: 12 (최근 30일)
이전 댓글 표시
I have some dates and then I have an ellapsed time for a transfer orbit (in seconds). I need to add the seconds (t.trans.trans12) to a date (DateString.launch) and want it to output the new date in the format 'yyyy-mm-dd HH:mm:ss'. I'm not really sure why its not working. I've tried everything I can find and isn't working quite how I want it.
So I need the new date (DateString.afterTrans12) so I can plug it into juliandate() so I can find the position of Mars and Earth at DateString.afterTrans12
If anybody has an easier way to do all of what I have below please share :)
%% Format Specifiers
epochValue = '2000-01-01';
formatIn = 'yyyy-MM-dd hh:mm:ss';
%% Transfer Time
t.trans.trans12 = seconds(2.236376148291764e+07); % seconds
%% DateStrings
DateString.epoch = datevec(datetime('2000-01-01 12:00:00','format',formatIn,'ConvertFrom','epochtime','Epoch',epochValue)); % J2000 epoch
DateString.start = datevec(datetime('2032-04-17 12:00:00','format',formatIn,'ConvertFrom','epochtime','Epoch',epochValue)); % mission start date
DateString.emergency = datevec(datetime('2039-11-03 12:00:00','format',formatIn,'ConvertFrom','epochtime','Epoch',epochValue)); % emergency date
DateString.launch = datevec(datetime('2040-04-17 12:00:00','format',formatIn,'ConvertFrom','epochtime','Epoch',epochValue)); % launch to planet date
DateString.afterTrans12 = []; % Need output in 'yyyy-mm-dd HH:mm:ss' for input of seconds;
%% Elapsed Time Data
T.launch = etime(DateString.launch,DateString.epoch); % between epoch and launch
T.emergency = etime(DateString.emergency,DateString.epoch); % between epoch and emergency
T.start = etime(DateString.start,DateString.epoch); % between epoch and start
%% Position Data
% ignore or erase this if you copy+paste to your computer and don't have the planet ephemeris package
position.earth.launch = planetEphemeris(juliandate(DateString.launch),'Sun','Earth');
position.earth.start = planetEphemeris(juliandate(DateString.start),'Sun','Earth');
position.earth.emergency = planetEphemeris(juliandate(DateString.emergency),'Sun','Earth');
position.mars.launch = planetEphemeris(juliandate(DateString.launch),'Sun','Mars');
position.mars.start = planetEphemeris(juliandate(DateString.start),'Sun','Mars');
position.mars.emergency = planetEphemeris(juliandate(DateString.emergency),'Sun','Mars');
댓글 수: 0
답변 (1개)
Peter Perkins
2019년 4월 16일
Andrew, it's not clear to me why you are converting datetimes to datevecs and then using etime. Not sure I've followed what you want to do, but this seems much simpler:
>> epoch = datetime('2000-01-01 12:00:00')
epoch =
datetime
01-Jan-2000 12:00:00
>> launch = datetime('2040-04-17 12:00:00')
launch =
datetime
17-Apr-2040 12:00:00
>> Tlaunch = launch - epoch % as hh:mm:ss
Tlaunch =
duration
353208:00:00
>> Tlaunch.Format = 'd' % as 24hr days
Tlaunch =
duration
14717 days
Here's how you add the seconds
>> afterTrans12 = seconds(123456)
afterTrans12 =
duration
123456 sec
>> launch = launch + afterTrans12
launch =
datetime
18-Apr-2040 22:17:36
>> JDLaunch = juliandate(launch)
JDLaunch =
2466263.42888889
>> %position.earth.launch = planetEphemeris(JDLaunch,'Sun','Earth');
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Dates and Time에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!