Dünyadaki herkesin anlayabileceği evrensel bir tarih formatı var mı?


10

Kanada'da herkes tarih biçimini biliyor YYYY-MM-DD. Avrupa veya Güney Afrika'da tercih ediyorlar DD-MM-YYYY. Güney Afrika'dan YYYY-MM-DDtarih formatı ile karışan kullanıcılar var . Bu durumu ele almanın bir yolu var mı?

Herkes için aşağıdaki yöntem biçimini kullanmayı düşünüyordum: Feb 02, 2011


21
YYYY-AA-GG biçiminin de bir ISO standardı olduğunu düşünüyorum.
SinirliWithFormsDesigner

2
"Avrupa veya Güney Afrika'da tercih ediyorlar DD-MM-YYYY." Macaristan ( YYYY.MM.DD) veya Finlandiya'da ( DD.MM.YYYY) hariç ... Üzgünüm, gerçeklik dağınık :-(
Péter Török

6
Farklı takvimler ne olacak?

4
(Kuzey Amerika) radar veri toplama, biz dosya adları için bu kullandı: prefix_1999_12_23_16_45_53.ext. Ana nedeni: bu darn kolay sıralama, ARAMA ve ayrıştırma oldu. Arama yaparken, ASAP hedefine ulaşmak için önce en önemli birim ile başlamak istersiniz. Bu tür dize ikili ağaç dostudur. Laboratuar Avrupa'daki öğrenciler tarafından yönetildi, ancak bence bu bilimsel bir standart olmasa da sadece sağduyu. Ancak, büyüdüğüm bir ülkede günlük kullanım için DD-MM-YYYY kullanırdık. Akıl yürütme: uyandığınızda bilmek istediğiniz ilk bölüm nedir?
İş

2
@Frustrated, onun noktası (Müslüman örn 1268/12/30? Yorumlamak nasıl) farklı bir başlangıç yılı olan takvimler veya ay ay olmasıdır tahmin (yaklaşık var olduğu. Yılda 13) vb Yani olmaya gerçekten evrensel, hangi sayının gün ve hangi ay olduğu konusunda hemfikir olmaktan daha fazlası ...
Péter Török

Yanıtlar:


15

Belirsiz onlar sayılarla temsil eğer parçası aydan farklılaştırarak güne etmektir.

02/03, 03 Şubat veya 02 Mart anlamına mı geliyor?

Ay tanımlayıcısını adıyla numarasından değiştirerek bu belirsizliği kaldırırsınız. Sorunuzu cevaplamak için, varyantınız Feb 02, 2011iyi bir çözüm gibi görünüyor.

Yalnızca 2 basamaklı yazıyorsanız, yıl numarasında hala potansiyel bir sorun vardır, ancak daha sonra düzeltilmesi kolaydır (4'ü kullanın).


10
Ve sonra farklı dillerde ay adları için bir çeviri dosyasına sahip olabilirsiniz.
SinirliWithFormsDesigner

1
@FrustratedWithFormsDesigner Ve doğru (iyi bilinen) kısaltmalara da profesyonel bir çeviri almayı unutmayın.
Nicole

Ayları adlandırmaya zahmet etmeyen diller ne olacak?
SADECE

19

Hayır . Evrensel olarak tanınan bir tarih biçimi yoktur.

ISO 8601 Tarih formatları için uluslararası bir standart tanımlar. Bu nedenle, muhtemelen en iyi uzlaşmadır. Ancak söylediğiniz gibi, kullanıcılar her zaman bu biçimi sevmez.

Tek doğru çözüm, farklı ülkeler için farklı bir format sunmaktır. Seçtiğiniz programlama dilinin önemli bir takipçisi varsa, bunu başarmak için standart bir kütüphane olduğunu görebilirsiniz.


2
Bu harika. Günlük dosyaları vb. İçin genellikle YYYYMMDD kullanıyorum. Şimdi sadece ISO-8601 uyumlu olduğumu söyleyebilirim!
Mark Harrison

1
ISO 8601 kullanırken genellikle tüm açıklığı biçimlendirmenin en iyi yolunu bulurum, örneğin 1999-12-25T00: 00: 00.000Z . Evet, ortalama bir insan için anlamsız görünüyor ama belirsizlik şansı yok.
MattDavey

2
"Tek doğru çözüm farklı ülkeler için farklı bir format sunmaktır." - ve dünyanın herhangi bir yerine gönderilebilen bir ambalaj fişine nasıl bir tarih yazmalıyım?
Scott Whitlock

@ScottWhitlock: Ne yazık ki, bu soruna evrensel olarak kabul edilmiş bir çözüm yok. Tarihi yazdırırken bir paketin nereye gönderildiğini bilmiyorsanız, ISO 8601 sizin için en iyi seçenek olabilir.
Kramii

"Tek doğru çözüm farklı ülkeler için farklı bir format sunmaktır." Bunun doğru olmadığını söyleyebilirim. Bugün öyle oluyor ki, bazı kütüphaneciler tercih ettiğim tarih formatı hakkında, - tercih edilen dilime bağlı olarak - karışıklığa neden olan yararlı bir fikir. Ancak şu anda tüm kültürleri düzeltemediğimiz için ilk adım olarak, ISO 8601'i veya aylarca metin veya başka bir şey kullanın.
Erik I

9

Bunun için kültür bilgisini kullanmalısınız. Ya da en azından yerel görüntü formatı.

JavaScript'te, Date sınıfı için toLocaleString yöntemini kullanabilirsiniz .

C # için ToString kullanırken biçim dizesini kullanabilirsiniz .

Hızlı bir Google araması, kültürü seçtiğiniz dilde nasıl kullanacağınızı göstermelidir.


5

YYYY-AA-GG ile giderdim (ve her zaman dört basamaklı yıl ve iki basamaklı aylar ve günler yazarım). YYYY-DD-MM, bildiklerime göre, nadiren nadirdir, bu nedenle YYYY-AA-DD formatı en az belirsizliğe sahip olan ve sonunda kullanıcılarınız yakalayacaktır. Ayrıca, önemsiz sıralama avantajı elde edersiniz.


2

Her kullanıcıya kendi yerel ayarlarını verebilir, bu da daha sonra tarihleri ​​ve diğer bilgileri yerel tercihlerine göre işler mi?


1

Çoğu zaman yerel ayarları yapılandırabilir ve çoğu çerçevede I18n'yi kullanabilirsiniz.


0

Genel durumda, hem biçimi hem de değeri belirtmeniz gerekir. Her türlü karışıklığı önlemenin tek yolu budur. Örneğin, "2011-02-02 (YYYY-AA-GG)" diyebilirsiniz. Basitlik ve okunabilirlik pahasına gelir, bu yüzden kitlenizi tanıyın.

Tabii ki, "Ahiret, tüm tarihler YYYY-AA-GG formatında" diyebilirsiniz. "Sonra" 2011-02-02 "daha sonra ortaya çıkacak. Bu daha lezzetli olabilir, ama yine de kitlenizi tanıyın.


Doğru, Estonya'da gün = päev ve ay = kuu, Filippino'da bunlar: araw ve buwan, Fince: päivä, kuukausi, Macarca: şekerleme, hónap, Endonezyaca: hari, bulan, Maltaca: jum, xahar , Rumence: zi, lună, Türkçe: gün, ay, Vietnamca: ngày, tháng ... her ayın m ile başlamadığı veya d ile başlamadığı birçok dilden bahsetmiyorum (Almanca: Monat, Etiket ) ve Latin alfabesi gibi bir şey kullanmayan diller.
İş

1
Eh, "2011-02-02" her durumda belirsizdir ...;)
Martin

0

Bu öneri muhtemelen işe yaramaz, ancak ayları romen rakamları olarak yazdım. Elbette, 3 / XI / 2011 11 Kasım veya 3 Mart olabilir, ancak sanırım ilk yorum daha doğal.


1
Roma rakamları? "Doğal?"
Wone the Sane

@Wonko, bu bağlamda "doğal" anlamında XI'nin bir aydan daha fazla bir ay olarak yorumlanması daha muhtemeldir. Son derece öznel olduğunu itiraf ediyorum.
ggambett

+1, kendim böyle bir şey düşünüyordum. yine de eleştirmenlerinize katılıyorum.
İş

Bu formatı hiç görmemiş olsaydım, ilk önce "Romen rakamları" ndan önce "yazım hatası" veya "çeviri hatası" nı düşünürdüm. Ancak o zaman anlamı tahmin etmeye çalışırdım.
Wone the Sane

3 / II / 2011'in Kasım olarak yorumlanacağından bahsetmiyoruz bile.
MSalters

0

Bunun ne yaptığınıza, girdi üzerinde ne kadar kontrole sahip olduğunuza bağlı olduğunu söyleyebilirim ve onu bir yerde mi saklıyorsunuz?

Depolama için Mike Dunlavey tarafından önerilenleri kullanacağım:

YYYYMMDDHHMMSS saatin UTC olduğu yerde, bir seçimim olduğunda verdiğiniz nedenlerden ötürü gideceğim yol budur. Başka seçeneğim olmadığında kullanıcının seçmesine izin verdim.

Bunu bir cevap olarak bırakmadı, ben de öyle yapacağım.

Bir şey daha: CC son kullanma tarihinin nasıl girileceğiyle ilgili aşağıdaki ekran görüntüsüne göz atın: http://www.ubercart.org/files/credit_card_checkout.jpg

Bu örnekle ilgili en güzel şey, sizi düşündürmemesi. Ay için hem numaraları hem de adları kullanır. Giriş için benzer bir şey kullanmayı düşünürdüm. Ay için hem numarayı hem de yerelleştirilmiş adı ekleyin. Yıl ve gün için sayısal Yukarı / Aşağı veya birleşik giriş kutuları kullanın. Ardından, takvim kontrolü de şık görünüyor.

Dediğim gibi, duruma göre değişir. Depolama için: bir veritabanı kullanıyorsanız, zaten iyi bir kesin veri biçimi sağlayıp sağlamadığını kontrol edin. Başka bir yöntem kullanıyorsanız, "saatin UTC'de olduğu YYYYMMDDHHMMSS" işlevinin yardımcı olup olmadığına bakın. Kullanıcıya sunmak için - hangi ülkelerin / yerel halkın dahil olabileceğini göz önünde bulundurun, ardından en basit olanı, "Beni düşündürme" türünü seçin. Ayrıca bir seçenek sunmayı da düşünün.

Son olarak, benzer bir şey yapan bazı harika ürünlere göz atın ve nasıl yaptıklarını bulmaya çalışın.


ah bok, ekran görüntüsünü okurken 11 Kasım hakkında konuştuğumuzu sanıyordum ... Kredi kartının son geçerlilik tarihi hakkında konuşurken günün sadece gerekli olmadığını anlamak için: /
Matthieu M.

@Matthieu M., evet, bu biraz yanıltıcı :) Ancak, elinde bir CC tutuyorsanız ve veri girişi yapmak üzereyseniz, belki de daha fazla acıyor. Üç kutu varsa - biri gün için, o zaman bu daha az belirsiz olabilir.
İş

0

Web sitesinin son kullanıcıları için evrensel bir tarih ve saat biçimi yoktur. Tek bir tarih saat değeri de yoktur, çünkü değer müşterinin saat dilimine göre farklıdır. Küreselleşmeyi kullanmalısınız - veri, zaman, para birimi, takvim, kullanıcıların kültürüne göre nubmer biçimlerini hedeflemesi (kullanıcının tarayıcısından kabul edilen dillerden veya doğrudan uygulamanıza uygulanan anahtarla alınabilir). Bazı API'ler (örneğin .NET) bu özellikleri doğrudan destekler.

Tarih ve saati veritabanında saklamak için evrensel biçimi kullanın - UTC (evrensel saati koordinatlayın).


UTC o kadar evrensel değil:
Artıkları

-2

Uluslararası bilgisayar dünyasındaki tüm zekanın bu fındığı kıraması talihsiz bir durumdur.

Microsoft veya diğer sağlayıcılar Ay'ı Gün gibi sıfır dolu görünmesini sağlayacak, ancak üç basamaklı bir tarih maskesi eklemeyi düşünmüyorlar. Uygulamanın benimsenmesi, geleneksel tarih düzenlerinin herhangi birinde tanımlanması ve ayırt edilmesi kolay kalırken, matematiksel olarak eşdeğer olan yeni bir dizi değiştirilmiş tarih formatının tanıtımına yardımcı olacaktır. Yani:

  • 0MM-DD-YYYY, örneğin 03.2016 için 002-03-2016

  • DD-0MM-YYYY, örneğin 03 Şubat 2016 için 03-002-2016

  • YYYY-0MM-DD, örneğin 2016-02-03 için 2016-002-03

  • YYYY-GG-0MM, örneğin 2016-03-002 (herhangi biri kullanmak isterse!)

Bu şekilde düzeltmek çok kolay görünüyor ... Sanırım basit sadece iyi satmıyor.


2
Söyleyebileceğim tek şey: xkcd.com/927 Tarihler için zaten bir ISO standardımız var ve başka bir tanesine ihtiyacımız yok.
Simon B
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.