from posix to date

149 views (last 30 days)
Valeria Leto
Valeria Leto on 4 Mar 2020
Commented: Valeria Leto on 7 Mar 2020
Hi,
I am trying to use this command to convert the time vector t_ne expressed in posix time to a date
d = datetime(t_ne, 'ConvertFrom', 'posixtime')
but I get
datetime
5.0152e+10 CE
where is the problem?
  2 Comments
Guillaume
Guillaume on 4 Mar 2020
"where is the problem?"
Your input is not a posix time, most likely. What is the value of t_ne?
Valeria Leto
Valeria Leto on 4 Mar 2020
it's 1582650648869329937

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 4 Mar 2020
This is a bit tricky because you are working past double precision accuracy.
t_ne = uint64(1582650648869329937);
NS = 1e9;
right_over = mod(t_ne, NS);
left_over = t_ne - right_over;
d = datetime( double(left_over)/NS, 'convertfrom', 'posixtime', 'Format', 'dd-MMM-uuuu HH:mm:ss.SSSSSSSSS') + seconds(double(right_over)/NS)
  4 Comments
Walter Roberson
Walter Roberson on 5 Mar 2020
Yup, the complications are to preserve the 17 nanoseconds.
Valeria Leto
Valeria Leto on 7 Mar 2020
thanks a lot! very kind :)

Sign in to comment.

More Answers (0)

Categories

Find more on Dates and Time in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!