ISO 8601 ve RFC 3339 Tarih Biçimleri arasındaki fark nedir?


280

ISO 8601 ve RFC 3339 , web'de ortak olan iki biçim gibi görünüyor. Birini diğerinin üzerinde mi kullanmalıyım? Biri sadece bir uzantı mı? Gerçekten o kadar kötü umursamam gerekir mi?


42
RFC bağlantısını ietf.org/rfc/rfc3339.txt adresinden tools.ietf.org/html/rfc3339 adresindeki HTML sürümüne değiştirdim . RFC'lere birbirine bağlarken gerektiğini daima HTML sürümlerine bağlantı tools.ietf.org/html . Sadece bölüm bağlantıları sayesinde gezinmek daha kolay olmakla kalmaz, aynı zamanda en önemlisi, okuduğunuz RFC'yi güncelleyen veya geçersiz kılan tüm RFC'leri listeler. İnsanlar farkında olmadan Yığın Taşması konusunda eski RFC'lerden bahsediyorlar ve bu sorun ortadan kalkana kadar bu tavsiyeyi tekrarlamaya devam edeceğim. (Şüpheye yer bırakmamak için bu RFC geçersiz değildir.)
Mark Amery

Yanıtlar:


238

Biri sadece bir uzantı mı?

Hemen hemen evet - RFC 3339, ISO 8601'in bir profili olarak listelenir. En önemlisi RFC 3339 , tarih ve saatin tam bir sunumunu belirtir (yalnızca kesirli saniye isteğe bağlıdır). RFC'nin bazı küçük, ince farkları da vardır. Örneğin, yalnızca iki basamaklı yılların kesik temsillerine izin verilmez - RFC 3339 için 4 basamaklı yıl gerekir ve RFC yalnızca nokta karakterinin kesirli saniyeler için ondalık nokta olarak kullanılmasına izin verir. RFC ayrıca "T" nin bir boşlukla (veya başka bir karakterle) değiştirilmesine izin verirken, standart yalnızca atlanmasına izin verir (ve yalnızca temsili kullanan tüm taraflar arasında anlaşma olduğunda).

İkisi arasındaki farklar hakkında çok fazla endişe etmem, ancak kullanım durumunuzun bunlara girmesi ihtimaline karşı, bir bakışta göz atmaya değer:


11
Bu, ISO omitt 'T' için başka bir yol verir, ancak RFC 3339 emrettiği biçimde tools.ietf.org/html/rfc3339#page-12
Java Guy

21
Üzgünüm Java Guy, ama bu doğru değil. Bahsettiğiniz ek yalnızca bilgilendirme amaçlıdır ve kısıtlama, dilbilgisini daha basit tutmak içindir. Bölüm 5.6'nın sonundaki not, bölüm 5.2'nin konusu olan daha önce okunabilirlik sözüne atıfta bulunarak okunabilirlik amacıyla bir alan kullanılabileceğini açıkça belirtmektedir. alıntı yapmak için: "Bu sözdizimini kullanan uygulamalar, okunabilirlik uğruna, bir boşluk karakteriyle ayrılmış (örneğin) bir tam tarih ve tam zamanlı belirtmeyi seçebilir."
Greg A. Woods

8
@JavaGuy Bağlandığınız ek RFC 3339 sözdiziminden bile bahsetmiyor - ISO 8601 Toplanan ABNF olarak adlandırılıyor ve ABNF kullanarak ISO 8601'in gramerini resmi olarak tanımlama girişimidir . Hiçbir şey RFC 3339 datetime sözdizimi hakkında kanıt olarak alınmamalıdır.
Mark Amery


9
Ben Justin (önceki yorum) temas (ben orada ağır kaldırma çoğu sorumlu olmasa da) yazarım. Yorumunu onaylıyorum. Genel olarak, RFC3339 gibi şartname belgelerini zorunlu olmaktan ziyade belirtmenizi öneririm - neyin gerekli olduğunu belirleyen kullanım bağlamıdır . Neyin amaçlandığı açık olduğu sürece, belirli bir sözdizimi üretimine referans vermek iyidir. (Bu, RFC3339'un ISO8601'e seçici başvuru yaparken yaptığı şeyden gerçekten farklı değildir.) Ayrıca bölüm 5.6'daki NOT'a bakın .
Graham Klyne

20

RFC 3339 çoğunlukla ISO 8601'in bir profilidir, ancak aslında RFC 2822'den "-00: 00" saat dilimi belirtimini ödünç alma konusunda tutarsızdır. Bu Wikipedia makalesinde açıklanmaktadır.


4

Bu kadar umursamalısın. RFC 3339, kendisine göre, ISO 8601'den türetilmiş bir dizi standarttır. Bununla birlikte, birkaç dakika fark var ve hepsi RFC 3339'da özetleniyor. Bunların hepsini burada geçirebilirim, ancak muhtemelen daha iyisini yaparsınız endişelenmeniz durumunda belgeyi kendiniz okumak için:

http://tools.ietf.org/html/rfc3339

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.