LabVIEW time stamps can be stored in a number of ways. Along with the functions on the Timing palette, there’s a number of functions in File I/O palette including TDMS and Datalog. But what if I just wanted to store a simple time stamp?
The first approach would be to use “Format Date/Time String” function. However, with a string time stamp of say, 5/18/2015 4:03:48 PM, that’s 20 characters.
A more efficient approach would be to convert the time stamp into a double (8 bytes). With LabVIEW, can you do this by simply using the “To Double Precision” function. To convert it back, use the “To Time Stamp” function.
Storing a number this way is great since you can easily convert it back in LabVIEW. But it’s only great until somebody wants to display the absolute time in Excel. You see, LabVIEW uses the 1904 date system and the double precision number is the number of seconds since January 1, 1904. On the other hand, Excel uses the 1900 date system and a “serial number” which is the number of days since January 1, 1904. In the many years of developing in LabVIEW, I’ve always wondered what’s up with the 1904 date system as it always seemed arbitrary to me and then discovering that there’s many other date systems including the 1900 date system! After some Internet sleuthing, I ran into this article on microsoft.com that discusses the two date systems, an entertaining blog entry article by Joel Spolsky (of course he had something to say on this), and discovered the term epoch used as a reference date in computing.
Going back to the original example (now with sub seconds added), converting 5/18/2015 4:03:48.724 PM to a double results in 3514835028.724. If you enter this number into Excel and change the cell format as a Date, you end up with “########”. At this moment, you’re probably telling yourself “Oh I know, I need to covert this to days since 1904 because I read this really informative article!” Well, you would be right and you could also do crazy things like write macros or pre-convert the numbers in LabVIEW but why bother when you can use native functions?
Convert the entire Excel spreadsheet to the 1904 date system
Go to File >> Options >> Advanced. Find the “When calculating this workbook” section and select “Use 1904 date system”
Convert seconds to days and adjust for timezone
Days = Seconds / 86400
Since PDT = GMT – 7, we’re going to subtract 7/24 for a fraction of a day
Add a column for the new serial number
Set cell format to Date and specify the type of your choice. In this example, I chose “3/14/01 1:30 PM”.
There you have it. Now you can convert LabVIEW time stamps in Excel!