Raw data
{
"featured": true,
"handle": "iso8601-date",
"title": "ISO 8601 Date Format",
"tags": [
"dates"
],
"todo": "Handle millis, missing separators, etc.",
"variations": [
{
"title": "ISO 8601 Complete",
"description": "from the [Intervals Blog](https://www.myintervals.com/blog/iso-8601-date-validation/)",
"regex": "^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$",
"inputs": [
"2009-12T12:34",
"2009",
"2009-05-19",
"2009-05-19",
"20090519",
"2009123",
"2009-05",
"2009-123",
"2009-222",
"2009-001",
"2009-W01-1",
"2009-W51-1",
"2009-W511",
"2009-W33",
"2009W511",
"2009-05-19",
"2009-05-19 00:00",
"2009-05-19 14",
"2009-05-19 14:31",
"2009-05-19 14:39:22",
"2009-05-19T14:39Z",
"2009-W21-2",
"2009-W21-2T01:22",
"2009-139",
"2009-05-19 14:39:22-06:00",
"2009-05-19 14:39:22+0600",
"2009-05-19 14:39:22-01",
"20090621T0545Z",
"2007-04-06T00:00",
"2007-04-05T24:00",
"2010-02-18T16:23:48.5",
"2010-02-18T16:23:48,444",
"2010-02-18T16:23:48,3-06:00",
"2010-02-18T16:23.4",
"2010-02-18T16:23,25",
"2010-02-18T16:23.33+0600",
"2010-02-18T16.23334444",
"2010-02-18T16,2283",
"2009-05-19 143922.500",
"2009-05-19 1439,55"
]
},
{
"title": "ISO 8601 Date (standalone)",
"regex": "^\\d{4}-\\d{2}-\\d{2}$",
"inputs": [
"2020-01-01",
"2020-02-29",
"2020-03-15",
"2020-04-30",
"2020-05-01",
"2020-06-15",
"2020-07-31",
"2020-08-01",
"2020-09-15",
"2020-10-31",
"2020-11-01",
"2020-12-15"
]
},
{
"title": "ISO 8601 Date (inline)",
"regex": "\\b\\d{4}-\\d{2}-\\d{2}\\b",
"inputs": [
"My birthday is on 2020-01-01.",
"I was born on 1970-01-01.",
"The Ides of March is on 2020-03-15.",
"2020-04-30 is the last day of the month.",
"2020-05-01 is the first day of the month.",
"2020-06-15 is halfway through the month.",
"2020-07-31 is the last day of the month.",
"2020-08-01 is the first day of the month.",
"2020-09-15 is halfway through the month.",
"2020-10-31 is Halloween.",
"2020-11-01 is the day after Halloween.",
"2020-12-15 is halfway through the month."
]
},
{
"title": "ISO 8601 date+time (standalone)",
"regex": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$",
"inputs": [
"2020-01-01T00:00:00",
"2020-02-29T12:34:56",
"2020-03-15T23:59:59",
"2020-04-30T01:23:45",
"2020-05-01T12:34:56",
"2020-06-15T23:59:59",
"2020-07-31T01:23:45",
"2020-08-01T12:34:56",
"2020-09-15T23:59:59",
"2020-10-31T01:23:45",
"2020-11-01T12:34:56",
"2020-12-15T23:59:59"
]
},
{
"title": "ISO 8601 simple date+time (inline)",
"regex": "\\b\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\b",
"inputs": [
"My birthday is on 2020-01-01T00:00:00.",
"I was born on 1970-01-01T00:00:00.",
"The Ides of March is on 2020-03-15T23:59:59.",
"2020-04-30T01:23:45 is the last day of the month.",
"2020-05-01T12:34:56 is the first day of the month.",
"2020-06-15T23:59:59 is halfway through the month.",
"2020-07-31T01:23:45 is the last day of the month.",
"2020-08-01T12:34:56 is the first day of the month.",
"2020-09-15T23:59:59 is halfway through the month.",
"2020-10-31T01:23:45 is Halloween.",
"2020-11-01T12:34:56 is the day after Halloween.",
"2020-12-15T23:59:59 is halfway through the month."
]
}
],
"fullPath": "/app/patterns/iso8601-date.yaml"
}