diff --git a/README.md b/README.md index 90b8c4d..242108d 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud). -_1115 TILs and counting..._ +_1116 TILs and counting..._ --- @@ -400,6 +400,7 @@ _1115 TILs and counting..._ - [Numbers Are Empty](javascript/numbers-are-empty.md) - [Object Initialization With Shorthand Property Names](javascript/object-initialization-with-shorthand-property-names.md) - [Obtain Undefined Value With The Void Operator](javascript/obtain-undefined-value-with-the-void-operator.md) +- [Parse A Date From A Timestamp](javascript/parse-a-date-from-a-timestamp.md) - [Random Cannot Be Seeded](javascript/random-cannot-be-seeded.md) - [Reach Into An Object For Nested Data With Get](javascript/reach-into-an-object-for-nested-data-with-get.md) - [Render An Array Of Elements With React 16](javascript/render-an-array-of-elements-with-react-16.md) diff --git a/javascript/parse-a-date-from-a-timestamp.md b/javascript/parse-a-date-from-a-timestamp.md new file mode 100644 index 0000000..a3544fe --- /dev/null +++ b/javascript/parse-a-date-from-a-timestamp.md @@ -0,0 +1,33 @@ +# Parse A Date From A Timestamp + +If you are given a timestamp ([seconds since the Unix +epoch](https://stackoverflow.com/a/20823376/535590)) and you try to parse it +with [JavaScript's `new +Date()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date), +you are going to get a suprising result. + +```javascript +> new Date(1618499080) +Mon Jan 19 1970 11:34:59 GMT-0600 (Central Standard Time) +``` + +1970? I was expected something more in the current millenia. + +This is because JavaScript's `new Date()` expects a timestamp to be in milliseconds. Passing in a seconds representation of a timestamp, when it should be milliseconds, is going to result in a time pretty near the original Unix epoch. + +Instead what you need to do is multiple that _seconds_ value by `1000` to get +it in terms of milliseconds. + +```javascript +> new Date(1618499080 * 1000) +Thu Apr 15 2021 10:04:40 GMT-0500 (Central Daylight Time) +``` + +Also, notice that if I run [`+ new +Date()`](https://stackoverflow.com/a/221297/535590) without any argument, it +provides the current timestamp in milliseconds. + +```javascript +> + new Date() +1618499080598 +```