Robin Wieruch
Robin Wieruch

Reputation: 15898

from unix timestamp to datetime

I have something like /Date(1370001284000+0200)/ as timestamp. I guess it is a unix date, isn't it? How can I convert this to a date like this: 31.05.2013 13:54:44

I tried THIS converter for 1370001284 and it gives the right date. So it is in seconds.

But I still get the wrong date for:

var substring = unix_timestamp.replace("/Date(", "");
substring = substring.replace("000+0200)/", "");
var date = new Date();
date.setSeconds(substring);
return date;

Upvotes: 34

Views: 147897

Answers (9)

Bilal Haider
Bilal Haider

Reputation: 33

for people as dumb as myself, my date was in linux epoch but it was a string instead of an integer, and that's why i was getting RangeError: Date value out of bounds

so if you are getting the epoch from an api, parseInt it first

var dateTime = new Date(parseInt(1370001284000));
dateTime.toISOString();

Upvotes: 1

Dai
Dai

Reputation: 155055

Note my use of t.format comes from using Moment.js, it is not part of JavaScript's standard Date prototype.

A Unix timestamp is the number of seconds since 1970-01-01 00:00:00 UTC.

The presence of the +0200 means the numeric string is not a Unix timestamp as it contains timezone adjustment information. You need to handle that separately.

If your timestamp string is in milliseconds, then you can use the milliseconds constructor and Moment.js to format the date into a string:

var t = new Date( 1370001284000 );
var formatted = moment(t).format("dd.mm.yyyy hh:MM:ss");

If your timestamp string is in seconds, then use setSeconds:

var t = new Date();
t.setSeconds( 1370001284 );
var formatted = moment(t).format("dd.mm.yyyy hh:MM:ss");

Upvotes: 44

HiLuLiT
HiLuLiT

Reputation: 553

if you're using React I found 'react-moment' library more easy to handle for Front-End related tasks, just import <Moment> component and add unix prop:

import Moment from 'react-moment'

 // get date variable
 const {date} = this.props 

 <Moment unix>{date}</Moment>

Upvotes: 2

J C
J C

Reputation: 761

I would like to add that Using the library momentjs in javascript you can have the whole data information in an object with:

const today = moment(1557697070824.94).toObject();

You should obtain an object with this properties:

today: {
  date: 15,
  hours: 2,
  milliseconds: 207,
  minutes: 31,
  months: 4
  seconds: 22,
  years: 2019
}

It is very useful when you have to calculate dates.

Upvotes: 1

taggartJ
taggartJ

Reputation: 287

If using react:

import Moment from 'react-moment';
Moment.globalFormat = 'D MMM YYYY';

then:

<td><Moment unix>{1370001284}</Moment></td>

Upvotes: 3

Rauli Rajande
Rauli Rajande

Reputation: 2020

Without moment.js:

var time_to_show = 1509968436; // unix timestamp in seconds

var t = new Date(time_to_show * 1000);
var formatted = ('0' + t.getHours()).slice(-2) + ':' + ('0' + t.getMinutes()).slice(-2);

document.write(formatted);

Upvotes: 8

Akshay Haryani
Akshay Haryani

Reputation: 61

Import moment js:

var fulldate = new Date(1370001284000);
var converted_date = moment(fulldate).format(");

Upvotes: 2

Blair Anderson
Blair Anderson

Reputation: 20161

Looks like you might want the ISO format so that you can retain the timezone.

var dateTime = new Date(1370001284000);
dateTime.toISOString(); // Returns "2013-05-31T11:54:44.000Z"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString

Upvotes: 20

Tommi Komulainen
Tommi Komulainen

Reputation: 2880

The /Date(ms + timezone)/ is a ASP.NET syntax for JSON dates. You might want to use a library like momentjs for parsing such dates. It would come in handy if you need to manipulate or print the dates any time later.

Upvotes: 3

Related Questions