I need to format a date as yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
as specified by Parse's REST API for Facebook. I was wondering what the most lightweight solution to this would be.
Asked
Active
Viewed 2.2e+01k times
77

Robert Harvey
- 178,213
- 47
- 333
- 501

Garrett
- 11,451
- 19
- 85
- 126
6 Answers
143
Call the toISOString()
method:
var dt = new Date("30 July 2010 15:05 UTC");
document.write(dt.toISOString());
// Output:
// 2010-07-30T15:05:00.000Z

Robert Harvey
- 178,213
- 47
- 333
- 501
-
9How could you go the other direction? – user1789573 Oct 15 '15 at 14:59
-
2@user1789573: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse – Robert Harvey Oct 15 '15 at 15:53
17
toISOString()
will return current UTC time only not the current local time. If you want to get the current local time in yyyy-MM-ddTHH:mm:ss.SSSZ
format then you should get the current time using following two methods
Method 1:
console.log(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString());
Method 2:
console.log(new Date(new Date().getTime() - new Date().getTimezoneOffset() * 60000).toISOString());

jafarbtech
- 6,842
- 1
- 36
- 55
6
function converToLocalTime(serverDate) {
var dt = new Date(Date.parse(serverDate));
var localDate = dt;
var gmt = localDate;
var min = gmt.getTime() / 1000 / 60; // convert gmt date to minutes
var localNow = new Date().getTimezoneOffset(); // get the timezone
// offset in minutes
var localTime = min - localNow; // get the local time
var dateStr = new Date(localTime * 1000 * 60);
// dateStr = dateStr.toISOString("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); // this will return as just the server date format i.e., yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
dateStr = dateStr.toString("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
return dateStr;
}

Willi Mentzel
- 27,862
- 20
- 113
- 121

Revathy Durairajan
- 494
- 1
- 5
- 15
1
Add another option, maybe not the most lightweight.
dayjs.extend(dayjs_plugin_customParseFormat)
console.log(dayjs('2018-09-06 17:00:00').format( 'YYYY-MM-DDTHH:mm:ss.000ZZ'))
<script src="https://cdn.jsdelivr.net/npm/dayjs@1.9.7/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1.9.7/plugin/customParseFormat.js"></script>

xianshenglu
- 4,943
- 3
- 17
- 34
0
Node.js
const offsetInMinutes = 2 * 60 ; //Romanian
const todaysDate = new Date(new Date().getTime() + offsetInMinutes * 60000).toISOString();

Alex Balas
- 99
- 1
- 1
-8
You can use javax.xml.bind.DatatypeConverter
class
DatatypeConverter.printDateTime
&
DatatypeConverter.parseDateTime

Azee Md
- 193
- 2
- 7