Suppose I have a datetime string 10/09/2019 10:03:00.000 AM
.
Now, if I am in USA, I'll read it as 9th October 2019 and if I am in India, I'll read it as 10th September 2019.
So, my question is how do I parse this string as a Date object in such a way that it is parsed based on the local timezone.
I am using luxon
, but, pure javascript solution will also work.
Suppose I have a datetime string 10/09/2019 10:03:00.000 AM
.
Now, if I am in USA, I'll read it as 9th October 2019 and if I am in India, I'll read it as 10th September 2019.
So, my question is how do I parse this string as a Date object in such a way that it is parsed based on the local timezone.
I am using luxon
, but, pure javascript solution will also work.
1 Answer
Reset to default 14Using a recent version of Luxon that supports the use of "macro" tokens in the parser:
> DateTime.fromFormat("10/09/2019 10:03:00.000 AM", "D hh:mm:ss.SSS a").toISO()
'2019-10-09T10:03:00.000-04:00'
> DateTime.fromFormat("10/09/2019 10:03:00.000 AM", "D hh:mm:ss.SSS a", { locale: "en-IN" }).toISO()
'2019-09-10T10:03:00.000-04:00'
IMO, this solution is brittle, in the sense that Luxon's parser here very strict, essentially requiring that the date part match exactly DateTime.toFormat
in that locale, so differences in 0-padding, slashes vs hyphens, etc.
day/month/year
vsmonth/day/year
. If you want that handled properly, you'll likely have to allow your users to set their date format preference, but hopefully for display only. Most systems expect dates/timestamps to be handled inyear-month-day hour:minute:second
, with or without timezone (+/- offset) included. – Tim Lewis Commented Jul 2, 2019 at 14:33fromFormat
expects a format to be provided. I want automatic parsing based on culture. I guess as Tim suggested, I need to switch toyear-month-day hour:minute:second
– Ankit Kante Commented Jul 2, 2019 at 14:55