1

I'm trying to add/subtract days from moment time object. However, the problem im having is that the time offset is different then the local time of the server.

in db my time

2019-08-14T21:38:50-04:00

however, locally I get +0000

moment().format('YYYY-MM-DD hh:mm ZZ')
2019-08-15 07:19 +0000

so now if I try to convert the time stored in the db

moment("2019-08-14T21:38:50-04:00").format('YYYY-MM-DD hh:mm ZZ')
2019-08-15 01:38 +0000

if I use parseZone() I get

moment.parseZone("2019-08-14T21:38:50-04:00").format('YYYY-MM-DD hh:mm ZZ')
2019-08-14 09:38 -0400

I also tried manually removing the offset of 4 hours (to balance it out?)

moment("2019-08-14T21:38:50-04:00").utcOffset(-240).format('YYYY-MM-DD hh:mm ZZ')
2019-08-14 09:38 -0400

But the value out (after formatting) is always different then in.

How do I get 2019-08-14T21:38:50-04:00 as the output after I format moment obj back to a string?

Saad
  • 26,316
  • 15
  • 48
  • 69

1 Answers1

0
moment.parseZone("2019-08-14T21:38:50-04:00").format()

or

moment.parseZone("2019-08-14T21:38:50-04:00").format(moment.ISO_8601())

or

moment.parseZone("2019-08-14T21:38:50-04:00").format("YYYY-MM-DD[T]HH:mm:ssZ")

All of the above will produce "2019-08-14T21:38:50-04:00", the same as the input string.

The main problem in your third attempt is that you were using hh (12-hour clock) instead of HH (24-hour clock).

Matt Johnson-Pint
  • 230,703
  • 74
  • 448
  • 575