From Python (or other) "numbers" (days) to Julia's Dates type

Hi all.
A pythonean colleague just send this julian a file full of “python numbers (days)”. I need to change this to julia Dates to plot his data next to mine.

The data looks like this:

Date in python             Ydata
|738651.4662152778|33.66293802300822|
|738651.4679745369|34.6083807430083|
|738651.4697337963|35.170186969675|
|738651.4714930557|36.818388469674915|
|738651.4732523148|37.36646586634163|
|738651.475011574|36.84257671967487|
|738651.4767708334|37.1672857830082|
|738651.4785300927|37.331435759674946|
|738651.4802893519|37.323061736341515|
|738651.482048611|37.36812195300831|

How can I change the first column to julia Dates format? I really don´t even have python… so something Julia based? Matlab is also accepted hehehe

Thanks in advance!

Is it likely that ALL of these dates are 2015-05-15 00:13:55? And since the the numbers differ, that this is some high-frequency data, and sub-second only would differ?

I think this might be Excel date format, I converted first and last with:

Whatever it is, it would be nice that you could convert from some much used date “formats” (also great if people would actually just use some [ISO] standard, YYYY-DD-MM …). It could be done with a package, but these are simple calculations, from Unix timestamp (I believe already supported), and some others, the code would be similar, just different scaling and offset.

I’ve had do do similar calculation when porting from Matlab, I don’t recall if some internal Matlab format was used, or if it just came from Excel. I THINK that Python uses Unix timestamp internally, also on Windows, but that would then never be a float.

It looks like a monotonic time (as returned by time.monotonic() in Python). Here’s one way to load the data:

using DelimitedFiles, Dates

data = """
|738651.4662152778|33.66293802300822|
|738651.4679745369|34.6083807430083|
|738651.4697337963|35.170186969675|
|738651.4714930557|36.818388469674915|
|738651.4732523148|37.36646586634163|
|738651.475011574|36.84257671967487|
|738651.4767708334|37.1672857830082|
|738651.4785300927|37.331435759674946|
|738651.4802893519|37.323061736341515|
|738651.482048611|37.36812195300831|
"""

t_python, y = eachcol(readdlm(IOBuffer(data), '|'))[2:3]

t = Time.(Nanosecond.(round.(Int64, t_python * 1e9)))

# Output for t:
10-element Vector{Time}:
 13:10:51.466215278
 13:10:51.467974537
 13:10:51.469733796
 13:10:51.471493056
 13:10:51.473252315
 13:10:51.475011574
 13:10:51.476770833
 13:10:51.478530093
 13:10:51.480289352
 13:10:51.482048611

Yes it is a high sampling rate data set. Not really sure how it works just that it begins on 2023-05-11 around 11 am. People are very unconsidered with their formats indeed.