Show HN: An easy way to convert time(epoch.sh)
epoch.sh
Show HN: An easy way to convert time
https://epoch.sh/
40 comments
I don't think of it as an API to integrate into your service, but more of an easy to remember thing like http://http.cat/503 http://http.cat/404 etc.
How does this exist ? I like it.
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)
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)
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.
> 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.
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.
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.
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.
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...
Is this using a proper date/time library underneath, or did you write it yourself?
moment.js mostly
Um
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?
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.
"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.
Yup, good catch.
January 1, 2300 1:00 AM? What's the significance of that date?
In Powershell, it's a one-liner.
In Powershell, it's a one-liner.
PS C:\> (Get-Date 1/1/1970).addSeconds(10413795600)
Monday, January 01, 2300 1:00:00 AMWow... 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
Should be fixed now
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. ;)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"}`
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
It would also be useful to provide a way to convert the other way around (from a date to epoch).
I actually built a similar tool a while ago: http://timeconv.io/ that's similar to yours :) The goal is to provide a set of useful time/date utilities.
I actually built a similar tool a while ago: http://timeconv.io/ that's similar to yours :) The goal is to provide a set of useful time/date utilities.
Neat site. How does it know my local time?
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.
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.
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
Sure, but there is no JS on the page, and curling https://api.epoch.sh gives the same result.
IP sniffing?
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.