I'm inserting a date in a database in two different format.
this is inserting as Datetime
var mydate;
mydate = new Date();
document.getElementById('clockinhour').value = mydate.toISOString().slice(0, 19).replace('T', ' ');
Output A
2017-06-21 20:14:31
this is inserting as varchar :
document.getElementById('clocked_in_time').value = Date();
Output B
Wed Jun 21 2017 16:14:31 GMT-0400 (Eastern Standard Time)
Output B is the correct time but I need to display output A. What causes the time to change when converted toISOString? How can I fix this?
In your this is inserting as Datetime block your
slice
are stripping of the timezone part (theZ
at the end oftoISOString
output):As pointed out by @RobG in the comments section,
toISOString
should always return the date in UTC (Z
or+00:00
).The time "changes" because it is converted to UTC when you calls
toISOString
.If you want to get ISO date in your timezone, you should take a look in these two questions: How to ISO 8601 format a Date with Timezone Offset in JavaScript? and How to format a JavaScript date
ISO time is time zone free. You'll notice with b you have time zone GMT-04:00 if you add those four hours to the 16 hours in the Date, you get 20