Skip to content

Instantly share code, notes, and snippets.

@ikouchiha47
Last active June 3, 2024 14:25
Show Gist options
  • Save ikouchiha47/7036273fa3e0888b849f46b1e87aabfa to your computer and use it in GitHub Desktop.
Save ikouchiha47/7036273fa3e0888b849f46b1e87aabfa to your computer and use it in GitHub Desktop.
Internet Engineering Task Force (IETF) Amitava Ghosh
Internet-Draft Example Inc.
Intended status: Standards Track June 3, 2024
Expires: December 3, 2024
A New Date Format for ISO Compatibility and Reduced Ambiguity
draft-iso-date-extended-date-format-00
Abstract
This document proposes a new date format designed to enhance clarity
and reduce ambiguity in date representation, particularly when dates
are transmitted electronically. The format, YYYY-MM(M)-DD(D),
explicitly distinguishes each component of the date, improving
validation and interpretation. This proposal aims to maintain
compatibility with ISO 8601 while adding explicit markers for the
month and day components.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute working
documents as Internet-Drafts. The list of current Internet-Drafts is
at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 3, 2024.
Copyright Notice
Copyright (c) 2024 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction ................................................... 2
2. Format Specification ........................................... 2
2.1. Date Format ............................................... 2
2.2. Time Format ............................................... 3
2.3. Combined Date and Time Format ............................. 3
3. Examples ....................................................... 3
4. Validation and Implementation .................................. 4
5. Backward Compatibility and Interoperability .................... 4
6. Security Considerations ........................................ 5
7. Conclusion ..................................................... 5
8. References ..................................................... 6
8.1. Normative References ...................................... 6
8.2. Informative References .................................... 6
Author's Address .................................................. 6
1. Introduction
The need for a standardized date and time format is critical in
digital communications to avoid ambiguity and ensure proper
interpretation across different systems and regions. The proposed
format YYYY-MM(M)-DD(D) adds explicit markers to the month and day
components, enhancing clarity and aiding in accurate date parsing.
While other parts of the date and time format, such as the time of
day and time zone indicators, have clear and unambiguous signals,
the date format can sometimes be misinterpreted. For example,
2019-12-03 can be understood as December 3, 2019 (ISO format) or
March 12, 2019 in other conventions. The new format aims to eliminate
this ambiguity.
2. Format Specification
2.1. Date Format
The date format is defined as follows:
- Year: A four-digit representation of the year (YYYY).
- Month: A one- or two-digit representation of the month (MM),
followed by the letter M.
- Day: A one- or two-digit representation of the day (DD), followed
by the letter D.
2.2. Time Format
The time format remains as defined in ISO 8601:
- Hour: A two-digit representation of the hour (HH).
- Minute: A two-digit representation of the minute (MM).
- Second: A two-digit representation of the second (SS).
- Time Zone: A literal "Z" indicating Coordinated Universal Time
(UTC) or an offset from UTC (e.g., +02:00).
2.3. Combined Date and Time Format
The combined date and time format is expressed as:
YYYY-MM(M)-DD(D):THH:MM:SSZ
This format explicitly marks the month and day components and includes
time zone information.
3. Examples
The following examples illustrate the proposed format:
- December 3, 2019, 14:23:45 UTC: 2019-12M-03D:T14:23:45Z
- February 9, 2024, 07:05:00 UTC: 2024-2M-09D:T07:05:00Z
- July 15, 1987, 23:59:59 UTC: 1987-7M-15D:T23:59:59Z
4. Validation and Implementation
Validation involves ensuring that each component adheres to the
appropriate range:
- Year: 0000 to 9999
- Month: 01 to 12
- Day: 01 to 31 (with additional checks for month-specific day
ranges)
Implementation in software can be straightforward. For example, in
Python:
```python
import re
def validate_date(date_str):
pattern = r'^\d{4}-\d{1,2}M-\d{1,2}D$'
match = re.match(pattern, date_str)
if not match:
return False
year, month, day = re.split(r'M-|D$', date_str.replace('M-', '-').replace('D', ''))
year, month, day = int(year), int(month), int(day)
if month < 1 or month > 12:
return False
if day < 1 or day > 31:
return False
# Additional checks for day range depending on the month can be added here
return True
# Examples
print(validate_date('2019-12M-03D')) # True
print(validate_date('2024-2M-09D')) # True
print(validate_date('1987-7M-15D')) # True
print(validate_date('2019-13M-03D')) # False (invalid month)
print(validate_date('2024-02M-30D')) # False (invalid day for February)
```
5. Backward Compatibility and Interoperability
The proposed format is designed to be backward compatible with
existing ISO 8601 standards. Systems that currently process
YYYY-MM-DD can be adapted to recognize and parse the new format with
minimal changes.
Interoperability with systems using other date formats can be
maintained by implementing conversion routines. For example, a system
can convert 2019-12M-03D to 2019-12-03 for compatibility with
existing ISO 8601-compliant systems.
6. Security Considerations
The proposed date format does not introduce any new security risks.
However, it is essential to ensure that date validation logic is
robust to prevent potential security vulnerabilities related to date
handling (e.g., buffer overflows, injection attacks).
7. Conclusion
The new date format YYYY-MM(M)-DD(D) provides a clear and unambiguous
way to represent dates, facilitating easier validation and
interpretation. By explicitly marking the month and day components,
this format reduces the risk of misinterpretation and enhances the
reliability of date transmission in electronic communications.
8. References
8.1. Normative References
[ISO8601] International Organization for Standardization,
"Data elements and interchange formats – Information
interchange – Representation of dates and times",
ISO 8601:2004.
8.2. Informative References
[RFC3339] Klyne, G., and C. Newman, "Date and Time on the
Internet: Timestamps", RFC 3339, July 2002.
Author's Address
Amitava Ghosh
Example Inc.
Email: amitava.dev@proton.me
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment