简体   繁体   中英

moment.js strict mode time format validation with time zone

I'm trying to get moment.js to validate (strict mode) a user-entered date/time with time zone. Example:

moment("2018-01-20 06:30 PDT", "YYYY-MM-DD HH:mm Z", true).isValid();

This returns false, though the user-entered value is valid for my purposes. If I take off the time zone and the "Z" token it validates fine, as expected.

I've checked what seemed the most relevant SO posts but come up empty. I'd appreciate any tips. Do I need to use moment.tz in some form for this use case? Thanks much in advance.

EDIT: to clarify, "2018-01-20 06:30 PDT" is what the user enters manually, "yyyy-MM-dd HH:mm z" is the (ISO 8601?) date/time format required by the app, and we massage those tokens to "YYYY-MM-DD HH:mm Z" to pass to moment.js for validation.

To make it work instead of PDT you can provide timezone offset ie -0700 example -

moment("2018-01-20 06:30 -0700", "YYYY-MM-DD HH:mm Z", true).isValid();

For more details refer - https://momentjs.com/docs/#/parsing/string-format

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM