40 comments

[ 3.2 ms ] story [ 83.7 ms ] thread
I've been using epochconverter.com for several years. Thank you for the effort. I like to break things. So, don't worry about this. But, it will not process 10413795600?
January 1, 2300 1:00 AM? What's the significance of that date?

In Powershell, it's a one-liner.

  PS C:\> (Get-Date 1/1/1970).addSeconds(10413795600)
  
  Monday, January 01, 2300 1:00:00 AM
It looks like the max value is 9999999999.

"unix": 9999999999, "utc": "2286-11-20T17:46:39Z"

edit: No, I was very wrong. Adding another 9 seems to work. However, moving up one to 10000000000 does not.

edit2: Okay I wasn't wrong. It just was changed by the OP very quickly. Which I guess makes this entire post wrong now. But let the record reflect for a very brief period in my life I was correct.

Wow... thanks for that. I had a silly check for length of unix time stamp (so it can handle things like Date.now())

Should be fixed now

Neat site. How does it know my local time?
Getting of your browser?
Yes - but how? I looked at the HTTP headers I was sending and none of them contained the time zone.
Open your console and type `new Date()`. In JS every date is local time by default
Looking at the response headers, could they be inferring the timezone based on what cloud front server the user hits?

Edit: This is probably way over thinking it, but here are the Amazon data center IP's. Search "CLOUDFRONT" https://ip-ranges.amazonaws.com/ip-ranges.json to see the list of regions.

IP geolocation - try it from a proxy.
Geo lookup on your IP to get a time zone. Easy to spoof with a proxy / vpn.
I can see that this might be useful for interactive human use, but I'm not sure of the benefit of the API. Most popular programming languages have a library to do this already without relying on a network service.

Unix command line with GNU date:

date --iso-8601=seconds

date --iso-8601=seconds -u # UTC

date --iso-8601=seconds -d @1234567890 # specified time stamp

date -d 2017-06-29T12:28:57-07:00 +%s # other direction

Python: https://stackoverflow.com/questions/2150739/iso-time-iso-860...

Using a network API for this kind of conversion function that's already built into programming languages reminds me of the left-pad controversy. You don't need to outsource basic programming tasks to third-party libraries, and you also don't need to outsource them to third-party network services.

> but I'm not sure of the benefit of the API

I agree, when talking about programming language, but maybe could be useful when using services like Zapier and similar, when you don't want to use a programming language for doing simple things or don't know programming.

Over the years, I've noticed the best way to learn about shell one-liners is to read HN comments on programs that implement trivial functionality.
Creator here.

The API is definitely not useful for most programmatic things. Just a simple way to get the time if you don't have the ability to use bash or a programming language.

I mostly wanted a way to copy a timestamp and type in a url to get a human readable time in local time. (https://epoch.sh/1498769628)

back in school we was tasked to write something, i dont recall what it was but it was mostly facts. i found a good paper on the internet and while rewriting it i thought to my self, why am i rewriting it? it was already written exactly as i would put it, and the facts where right. so i gave the paper i found on the internet to the teacher. but so did also one of my class mates. thats how it feels like when reusing someone elses code. it feels like cheating.
It's not clear how it detects which type you've passed, but this is pretty unexpected:

https://api.epoch.sh/-100

`{"local":"0099-12-31T16:00:00-08:00","unix":-59011459200,"utc":"0100-01-01T00:00:00Z"}`

This too:

https://api.epoch.sh/8675309

`{"local":"8675-11-04T16:00:00-08:00","unix":211615977600,"utc":"8675-11-05T00:00:00Z"}`

This should be fixed now. As others pointed out, had some bad validation
Why is `-100` invalid?
You know, I have no idea why I even checked for < 0 since it's seconds backwards since epoch. Just a mental snag I guess
Doesn't seem to like any Unix timestamps less than 10 characters long?
Fun, but I found this part interesting:

    ⏵ http https://api.epoch.sh/ 
    HTTP/1.1 200 OK
    ...
    Date: Thu, 29 Jun 2017 21:06:20 GMT
    ...
    
    {
        "utc": "2017-06-29T21:06:19Z"
    }

One second off. ;)
Does not handle leap seconds:

https://api.epoch.sh/2016-12-31T23:59:60Z

Edge case, but 2016-12-31T23:59:60Z is a valid UTC time.

I didn't even know that was possible...
Welcome to the rabbit hole that is date/time handling.
Yup. Probably just step lightly out of that one. Already have too many irons in the fire
Is this using a proper date/time library underneath, or did you write it yourself?
@Prefinem Do you plan to release the site source code?

I like it, a cool and useful project for sure.

I could. It’s just a simple Lambda function.

I will try and do so tomorrow.