มีรูปแบบวันที่สากลที่ทุกคนในโลกสามารถเข้าใจได้หรือไม่?


10

YYYY-MM-DDในแคนาดาทุกคนมีความคุ้นเคยกับรูปแบบวันที่ DD-MM-YYYYในยุโรปหรือแอฟริกาใต้ที่พวกเขาต้องการ มีผู้ใช้จากแอฟริกาใต้ที่สับสนกับYYYY-MM-DDรูปแบบวันที่ มีวิธีจัดการกับสถานการณ์นี้หรือไม่?

ฉันคิดว่าจะใช้รูปแบบวิธีการต่อไปนี้สำหรับทุกคน: Feb 02, 2011


21
ฉันคิดว่ารูปแบบ YYYY-MM-DD ก็เป็นมาตรฐาน ISO เช่นกัน
FrustratedWithFormsDesigner

2
"ในยุโรปหรือแอฟริกาใต้พวกเขาชอบDD-MM-YYYY" ยกเว้นเช่นในฮังการี ( YYYY.MM.DD) หรือฟินแลนด์ ( DD.MM.YYYY) หรือ ... ขออภัยความเป็นจริงยุ่ง :-(
PéterTörök

6
สิ่งที่เกี่ยวกับปฏิทินที่แตกต่างกันอย่างไร

4
เมื่อเก็บรวบรวมข้อมูลเรดาร์ (ในทวีปอเมริกาเหนือ) prefix_1999_12_23_16_45_53.extเราใช้วิธีนี้สำหรับชื่อไฟล์: เหตุผลหลัก: นี่เป็นเรื่องง่ายที่จะเรียงลำดับค้นหาและแยกวิเคราะห์ เมื่อค้นหาคุณต้องการเริ่มต้นด้วยหน่วยที่สำคัญที่สุดก่อนเพื่อให้บรรลุเป้าหมายโดยเร็วที่สุด การเรียงลำดับของสตริงนี้เป็นมิตรกับไบนารีทรี ห้องปฏิบัติการถูกควบคุมโดยนักเรียนจากยุโรป แต่ฉันคิดว่านี่เป็นแค่สามัญสำนึกหากไม่ใช่มาตรฐานทางวิทยาศาสตร์ อย่างไรก็ตามในประเทศที่ฉันโตมาเราจะใช้ DD-MM-YYYY เพื่อใช้ในชีวิตประจำวัน เหตุผล: เมื่อคุณตื่นขึ้นส่วนแรกที่คุณอยากรู้คืออะไร?
งาน

2
@ เฟ้อผมคิดว่าประเด็นของเขาคือมีปฏิทินที่มีปีเริ่มต้นที่แตกต่างกัน (มุสลิมจะตีความเช่น 30.12.1268 อย่างไร) หรือเดือนเดือน (ซึ่งมีประมาณ 13 ต่อปี) ฯลฯ ดังนั้นจะเป็นจริงสากลเป็นมากกว่าแค่การเห็นด้วยกับจำนวนวันและเดือนใด ...
PéterTörök

คำตอบ:


15

ส่วนที่ไม่ชัดเจนคือการแยกวันจากเดือนหากพวกเขาแสดงด้วยตัวเลข

02/03 หมายถึง 03 กุมภาพันธ์หรือมีนาคม 02 หรือไม่

ด้วยการเปลี่ยนตัวระบุเดือนจากหมายเลขด้วยชื่อคุณจะลบความคลุมเครือนั้น เพื่อตอบคำถามของคุณตัวแปรที่Feb 02, 2011ดูเหมือนว่าจะเป็นทางออกที่ดี

ยังคงมีปัญหาที่อาจเกิดขึ้นกับหมายเลขปีหากคุณเขียนด้วยตัวเลข 2 หลักเท่านั้น แต่จากนั้นก็ง่ายต่อการแก้ไข (ใช้ 4)


10
จากนั้นคุณสามารถมีไฟล์แปลสำหรับชื่อเดือนในภาษาต่างๆ
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner และอย่าลืมที่จะแปลแบบมืออาชีพไปยังตัวย่อ (ที่รู้จักกันดี) ที่ถูกต้องเช่นกัน
นิโคล

แล้วภาษาที่ไม่ได้ตั้งชื่อเดือนล่ะ?
เพียงความคิดเห็นที่ถูกต้องของฉัน

19

เลขที่ ไม่มีรูปแบบวันที่ได้รับการยอมรับในระดับสากลคือ

ISO 8601กำหนดมาตรฐานสากลสำหรับรูปแบบวันที่ ดังนั้นจึงน่าจะเป็นการประนีประนอมที่ดีที่สุด แต่อย่างที่คุณพูดผู้ใช้มักไม่ชอบรูปแบบนี้

ทางออกที่ถูกต้องเพียงอย่างเดียวคือการนำเสนอรูปแบบที่แตกต่างกันสำหรับประเทศต่างๆ คุณอาจพบว่ามีไลบรารี่มาตรฐานสำหรับการทำสิ่งนี้หากภาษาการเขียนโปรแกรมที่คุณเลือกมีดังต่อไปนี้


2
มันเยี่ยมมาก ฉันมักจะใช้ YYYYMMDD สำหรับ logfiles ฯลฯ ตอนนี้ฉันสามารถพูดได้ว่าฉันแค่เป็นไปตามมาตรฐาน ISO-8601!
Mark Harrison

1
เมื่อใช้ ISO 8601 ฉันมักจะพบว่ามันเป็นเรื่องที่ดีที่สุดเพื่อจัดรูปแบบสิ่งอย่างชัดเจนทั้งหมดเช่น1999-12-25T00: 00: 00.000Z ใช่ดูเหมือนพูดไม่ชัดกับคนทั่วไป แต่ไม่มีโอกาสที่จะคลุมเครือ
MattDavey

2
"ทางออกที่ถูกต้องเพียงอย่างเดียวคือการนำเสนอรูปแบบที่แตกต่างกันสำหรับประเทศต่างๆ" - และฉันควรจะพิมพ์วันที่ลงบนแผ่นบันทึกข้อมูลที่สามารถจัดส่งได้ทุกที่ในโลกได้อย่างไร
Scott Whitlock

@ScottWhitlock: น่าเสียดายที่ไม่มีวิธีแก้ปัญหาที่เป็นที่ยอมรับในระดับสากลสำหรับปัญหานี้ หากคุณไม่ทราบว่าแพคเกจจะถูกส่งเมื่อคุณพิมพ์วันที่แล้ว ISO 8601 อาจเป็นทางออกที่ดีที่สุดของคุณ
Kramii

"ทางออกที่ถูกต้องเพียงอย่างเดียวคือการนำเสนอรูปแบบที่แตกต่างกันสำหรับประเทศต่างๆ" ฉันว่ามันไม่ถูกต้อง มันเกิดขึ้นได้แล้ววันนี้ที่ห้องสมุดบางแห่งมีความคิดที่เป็นประโยชน์เกี่ยวกับรูปแบบวันที่ที่ฉันต้องการ - อิงตามภาษาที่ฉันต้องการ แต่เป็นขั้นตอนแรกเนื่องจากเราไม่สามารถแก้ไขวัฒนธรรมทั้งหมดได้ในตอนนี้ใช้ ISO 8601 หรือข้อความสำหรับเดือนหรือบางอย่าง
เอริคฉัน

9

คุณควรใช้ข้อมูลวัฒนธรรมสำหรับสิ่งนั้น หรืออย่างน้อยรูปแบบการแสดงในท้องถิ่น

ใน JavaScript, คุณสามารถใช้วิธี toLocaleString สำหรับระดับวัน

สำหรับ C # คุณสามารถใช้รูปแบบของสตริงเมื่อใช้ToString

การค้นหาโดย Google อย่างรวดเร็วควรแสดงวิธีใช้วัฒนธรรมในภาษาที่คุณเลือก


5

ฉันจะไปกับ YYYY-MM-DD (และมักจะเขียนปีสี่หลักและเดือนสองหลักและวัน) ความรู้ของฉัน YYYY-DD-MM นั้นแปลกไปหายากดังนั้นรูปแบบ YYYY-MM-DD จึงเป็นสิ่งที่มีความคลุมเครือน้อยที่สุดและในที่สุดผู้ใช้ของคุณจะเข้ามา นอกจากนี้คุณจะได้รับประโยชน์จากการเรียงลำดับเล็กน้อย


2

คุณสามารถให้สถานที่ของตนเองกับผู้ใช้แต่ละคนซึ่งแสดงวันที่และข้อมูลอื่น ๆ ตามการตั้งค่าท้องถิ่นของพวกเขาได้หรือไม่?


1

หลายครั้งที่คุณสามารถกำหนดค่าตำแหน่งที่ตั้งและใช้ I18n ในกรอบงานส่วนใหญ่


0

ในกรณีทั่วไปคุณจะต้องระบุทั้งรูปแบบและค่า นี่เป็นวิธีเดียวที่จะหลีกเลี่ยงความสับสนใด ๆ และทั้งหมด ตัวอย่างเช่นคุณสามารถพูดว่า "2011-02-02 (YYYY-MM-DD)" มันมาพร้อมกับค่าใช้จ่ายของความเรียบง่ายและความสามารถในการอ่านดังนั้นจงรู้ผู้ชมของคุณ

แน่นอนว่าคุณสามารถพูดว่า "ต่อจากนี้ไปวันที่ทั้งหมดอยู่ในรูปแบบ YYYY-MM-DD .... " จากนั้น "2011-02-02" ที่ปรากฏในภายหลังจะไม่มีความชัดเจน ซึ่งอาจเป็นที่พอใจมากกว่า แต่ก็รู้จักผู้ชมของคุณอีกครั้ง


ถูกต้องยกเว้นว่าในเอสโตเนียวัน = päevและเดือน = kuu ใน Filippino พวกเขาคือ: araw และ buwan ในฟินแลนด์: päivä, kuukausi ในฮังการี: งีบhónapในอินโดนีเซีย: hari, bulan ใน Malteese: jum, xahar , ในโรมาเนีย: zi, lună, ในภาษาตุรกี: gün, ay, ในภาษาเวียดนาม: ngày, tháng ... ไม่พูดถึงหลายภาษาที่ทั้งสองเดือนไม่ได้เริ่มต้นด้วย m หรือวันไม่เริ่มต้นด้วย d (เยอรมัน: Monat, Tag ) เช่นเดียวกับภาษาที่ไม่ได้ใช้ภาษาละติน
งาน

1
ดี "2011-02-02" ไม่น่าสงสัยในกรณีใด ๆ ... ;)
มาร์ติน

0

คำแนะนำนี้อาจไร้ประโยชน์ แต่ฉันเห็นเดือนเขียนเป็นตัวเลขโรมัน แน่นอนว่า 3 / XI / 2011 อาจเป็น 11 พฤศจิกายนหรือ 3 มีนาคม แต่ฉันเดาว่าการตีความครั้งแรกนั้นเป็นเรื่องที่เป็นธรรมชาติมากกว่า


1
เลขโรมัน "ธรรมชาติ"
Wonko the Sane

@ วอนโกะ "เป็นธรรมชาติ" ในแง่ที่ว่าในบริบทนั้นจินมีแนวโน้มที่จะถูกตีความว่าเป็นหนึ่งเดือนมากกว่าหนึ่งวัน ฉันยอมรับว่ามันเป็นเรื่องส่วนตัวอย่างยิ่ง
ggambett

+1, ฉันกำลังคิดอะไรบางอย่างเช่นนี้เอง แต่ฉันก็เห็นด้วยกับนักวิจารณ์ของคุณ
งาน

ไม่เคยเคยเห็นรูปแบบนั้นมาก่อนฉันคิดว่า "ตัวพิมพ์" หรือ "ข้อผิดพลาดการแปล" ก่อนที่มันจะเริ่ม "ตัวเลขโรมัน" กับฉัน เท่านั้นฉันจะพยายามเดาความหมาย
Wonko the Sane

ไม่ต้องพูดถึงว่า 3 / II / 2011 จะสิ้นสุดการตีความเมื่อเดือนพฤศจิกายน
MSalters

0

ฉันจะบอกว่ามันขึ้นอยู่กับสิ่งที่คุณกำลังทำอยู่คุณควบคุมได้มากแค่ไหนกับอินพุตและคุณเก็บมันไว้ที่ไหนซักแห่ง?

สำหรับการจัดเก็บฉันจะใช้สิ่งที่ Mike Dunlavey แนะนำ:

YYYYMMDDHHMMSS โดยที่เวลาอยู่ใน UTC เป็นวิธีที่ฉันไปเมื่อใดก็ตามที่ฉันมีตัวเลือกด้วยเหตุผลที่คุณให้ เมื่อฉันไม่มีตัวเลือกฉันให้ผู้ใช้เลือก

เขาไม่ได้ปล่อยให้เรื่องนี้เป็นคำตอบดังนั้นฉันจะ

อีกอย่างหนึ่ง: ดูภาพหน้าจอต่อไปนี้ของวิธีเข้าสู่วันหมดอายุ CC: http://www.ubercart.org/files/credit_card_checkout.jpg

สิ่งที่ยอดเยี่ยมเกี่ยวกับตัวอย่างนี้คือมันไม่ได้ทำให้คุณคิด มันใช้ทั้งตัวเลขและชื่อสำหรับเดือน ฉันจะพิจารณาใช้สิ่งที่คล้ายกับอินพุต สำหรับเดือนนั้นให้รวมทั้งหมายเลขและชื่อที่แปลแล้ว สำหรับปีและวันให้ใช้ตัวเลขขึ้น / ลงหรือกล่องคำสั่งผสม จากนั้นตัวควบคุมปฏิทินก็ดูดี

อย่างที่ฉันพูดมันขึ้นอยู่กับ สำหรับที่เก็บข้อมูล: หากใช้ฐานข้อมูลให้ตรวจสอบว่ามีรูปแบบข้อมูลที่ดีโปร่งใสอยู่แล้วหรือไม่ หากใช้วิธีอื่นให้ดูว่า "YYYYMMMMDDHHMMSS โดยที่ชั่วโมงอยู่ใน UTC" หรือไม่ สำหรับการนำเสนอให้กับผู้ใช้ - คำนึงถึงประเทศ / พื้นที่ที่อาจมีส่วนร่วมจากนั้นเลือกสิ่งที่ตรงที่สุดว่า "อย่าทำให้ฉันคิดว่า" การเป็นตัวแทน พิจารณาการให้ทางเลือกด้วย

ในที่สุดตรวจสอบผลิตภัณฑ์เจ๋ง ๆ ที่ทำอะไรคล้าย ๆ กันอยู่แล้วและลองดูว่าพวกมันทำอะไรได้บ้าง


อึอึ, เมื่ออ่านภาพหน้าจอฉันคิดว่าเรากำลังพูดถึงวันที่ 11 พฤศจิกายนเท่านั้น ... ที่จะตระหนักถึงวันนั้นไม่จำเป็นเมื่อพูดถึงวันหมดอายุของบัตรเครดิต: /
Matthieu M.

@Matthieu M. , ใช่นั่นเป็นความเข้าใจผิดเล็กน้อย :) อย่างไรก็ตามถ้าคุณกำลังถือ CC ในมือของคุณและกำลังจะทำการป้อนข้อมูลบางทีมันอาจช่วยได้มากกว่าที่มันเจ็บปวด หากมีสามกล่อง - หนึ่งกล่องสำหรับวันนี้อาจไม่ชัดเจน
งาน

0

ไม่มีรูปแบบวันที่และเวลาสากลสำหรับผู้ใช้ปลายทางของเว็บไซต์ นอกจากนี้ยังไม่มีค่าเวลาวันที่เดียวเนื่องจากค่าแตกต่างกันตามเขตเวลาของลูกค้า คุณควรใช้โลกาภิวัตน์ - การกำหนดเป้าหมายของข้อมูลเวลาสกุลเงินปฏิทินรูปแบบ nubmer ขึ้นอยู่กับวัฒนธรรมของผู้ใช้ (สามารถรับได้จากภาษาที่ยอมรับผ่านจากเบราว์เซอร์ของผู้ใช้หรือโดยใช้สวิตช์ในแอปพลิเคชันของคุณโดยตรง) API บางตัว (เช่น. NET) มีการสนับสนุนคุณสมบัตินี้โดยตรง

สำหรับการจัดเก็บวันที่และเวลาในฐานข้อมูลให้ใช้รูปแบบสากล - UTC (พิกัดเวลาสากล)


UTC ไม่ได้เป็นสากล: ถ้าคุณต้องการใช้เวลาก้าวกระโดดเข้าบัญชีคุณควรใช้TAI
mouviciel

-2

มันเป็นเรื่องโชคร้ายที่หน่วยข่าวกรองทั้งหมดในโลกการคำนวณระหว่างประเทศไม่สามารถถอดรหัสถั่วนี้ได้

ไม่ใช่ Microsoft หรือผู้จำหน่ายรายอื่น ๆ ได้พิจารณาเพิ่มรูปแบบวันที่ที่จะทำให้เดือนปรากฏเป็นศูนย์ที่เต็มไปเหมือนวัน แต่เป็นตัวเลขสามหลัก การยอมรับการปฏิบัติจะช่วยส่งเสริมรูปแบบวันที่แก้ไขใหม่ซึ่งเทียบเท่าทางคณิตศาสตร์ในขณะที่ยังคงง่ายต่อการระบุและแยกแยะความแตกต่างในรูปแบบวันที่ดั้งเดิม นั่นคือ:

  • 0MM-DD-YYYY เช่น 002-03-2016 ในวันที่ 03 ก.พ. 2559

  • DD-0MM-YYYY เช่น 03-002-2016 สำหรับ 03-Feb-2016

  • YYYY-0MM-DD เช่น 2016-002-03 สำหรับ 2016-02-03

  • YYYY-DD-0MM เช่น 2016-03-002 (หากใครต้องการใช้!)

ดูเหมือนง่ายเกินไปที่จะแก้ไขด้วยวิธีนี้ ... ฉันคิดว่าง่าย ๆ แค่ขายไม่ดี


2
ทั้งหมดที่ฉันสามารถพูดได้คือ: xkcd.com/927 เรามีมาตรฐาน ISO สำหรับวันที่แล้วและไม่ต้องการอีกมาตรฐานหนึ่ง
Simon B
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.