quo91
quo91

Reputation: 139

What is this time format? (10 digits, 5 decimals)

So a website that I'm using has a websocket and they provide the broadcast time in the following manner:

"broadcasted_at":1574325570.71308

What is this time format and how do they generate it?

Upvotes: 2

Views: 2484

Answers (2)

Darren Smith
Darren Smith

Reputation: 2498

Unix epoch time ... the number of seconds that have elapsed since the Unix epoch, that is the time 00:00:00 UTC on 1 January 1970

now            :      1574327074 : Thu Nov 21 03:04:34 2019
start of day   :      1574316000 : Thu Nov 21 00:00:00 2019
1574325570     :      1574325570 : Thu Nov 21 02:39:30 2019

convert online : https://www.epochconverter.com/

... or download code (to build) to have command line program to perform the conversion https://github.com/darrenjs/c_dev_utils

I'm guessing the fractional part is the number of microseconds within the current second.

Upvotes: 4

Anonymous
Anonymous

Reputation: 86296

… and how do they generate it?

I don’t know, of course, what language or libraries your website is using. So this is just an example. To generate a value like 1574325570.71308 in Java:

    Instant now = Instant.now();
    double epochSeconds = now.getEpochSecond()
            + (double) now.getNano() / (double) TimeUnit.SECONDS.toNanos(1);
    String result = String.format(Locale.ROOT, "%f", epochSeconds);
    System.out.println("result: " + result);

When I ran this snippet just now (2019-12-15T11:18:01.562699Z), the output was:

result: 1576408681.562699

If you want exactly 5 decimals always another way is to use a DateTimeFormatter:

    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .appendValue(ChronoField.INSTANT_SECONDS)
            .appendPattern(".SSSSS")
            .toFormatter();
    String result = formatter.format(now);

result: 1576408681.56269

Upvotes: 1

Related Questions