How to understand a datenum date?

34 views (last 30 days)
Victoria Helm
Victoria Helm on 24 Aug 2021
Commented: Stephen23 on 25 Aug 2021
I'm trying to write some code that loops through files that are distinguished by date and I want to use the serial dates generated by datenum to do so. However, I'm having trouble understanding how datenum generates the serial date values. For instance, if I execute the following pseudocode:
myPath = 'D:\data\animals'
listing = dir(myPath)
...and if I open the listing I get a struct with one field being the datenum for each file in my directory. I see that the date and time '23-Aug-2021 18:29:25' generates the datenum 7.3839e+05. I don't understand the pattern. How does that date and time generate that exact value?
Thank you!!!
  1 Comment
Stephen23
Stephen23 on 25 Aug 2021
"How does that date and time generate that exact value?"
The DATENUM documentation states: "A serial date number represents the whole and fractional number of days from a fixed, preset date (January 0, 0000) in the proleptic ISO calendar." Thus if you counted all days (including leap days) from day 0 of year 0000 until the 23rd of August 2021, then you will get that serial date number.
Storing dates as a serial number is very common in computing, only the epoch and unit can be very different.

Sign in to comment.

Answers (1)

per isakson
per isakson on 24 Aug 2021
Edited: per isakson on 24 Aug 2021
A serial date (number) represents time as the number of days (and fraction of days) from January 0, 0000.
sdn = now % the function, now, returns a serial date number
sdn = 7.3839e+05
str = datestr( sdn )
str = '24-Aug-2021 22:09:33'
datenum( str )
ans = 7.3839e+05
  1 Comment
Walter Roberson
Walter Roberson on 25 Aug 2021
Right.
Note that if you are doing serious astronomical or historical work, you need to ask yourself:
  • what about leap years?
  • what about leap years before the reformation of what constituted a leap year?
  • what about the time before leap years were a thing at all?
  • What about "the Lost Days" (calendar reform to fix leap year problems), which is something that went into effect in different countries at different times
  • What about leap seconds?
  • solar day or sidereal days?

Sign in to comment.

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!