ฉันจะตั้งค่ารูปแบบวันที่เป็น ISO ทั่วโลกใน Linux ได้อย่างไร


19

ฉันต้องการตั้งค่ารูปแบบวันที่ Linux ทั่วโลกเป็น ISO ซึ่งมีลักษณะดังนี้:

YYYY-MM-DD HH:MM:SS
2009-03-16 15:20:00

ด้วยระดับรายละเอียดที่แตกต่างกันเช่นเวลาที่ละเว้นวินาทีเป็นต้น

ฉันรู้ว่าสำหรับบางแอปพลิเคชันคุณสามารถกำหนดค่านี้ด้วยตนเอง แต่ฉันต้องการให้ตั้งค่าโดยอัตโนมัติสำหรับทุกโปรแกรม

ฉันใช้ Ubuntu Intrepid โดยเฉพาะ แต่วิธีแก้ปัญหาทั่วไปที่ใช้ได้กับทุกดิสทริบิวชันจะดีที่สุด

คำตอบ:


11

ตั้งค่าตัวแปรสภาพแวดล้อมวันที่ของโลแคลLC_TIMEเป็น "en_DK" ตั้งไว้ในของคุณ.bashrcหรือที่คล้ายกันหรือตรวจสอบman localeวิธีตั้งค่าทั้งระบบ

บนArchLinuxการตั้งค่า Locale ทั้งหมดอยู่ใน/etc/rc.confและการตั้งค่าแบบกำหนดเองนั้น/etc/rc.local

#!/bin/bash
# Local multi-user startup script
export LC_TIME="en_DK"

2
ฉันพบว่าทุกวันนี้ (Ubuntu 12.04) คุณต้องตั้งค่าเป็น "en_DK.UTF8" แต่อย่างอื่นดีมากที่รู้ว่าคนเดนมาร์กใช้รูปแบบวันที่ ISO; -)
pfalcon

3
@ pfalcon ไม่ใช่ "ภาษาอังกฤษในเดนมาร์ก" เนื่องจากตัวย่อจะทำให้คนหนึ่งเชื่อว่ามันเป็นจริงซึ่งเป็นชื่อตลกที่หายไปกับฉัน ... ดูการอ้างอิงจากข้อผิดพลาด freebsd นี้ซึ่งน่าเสียดายที่ตัดสินใจที่จะไม่ยอมรับมัน : freebsd.org/cgi/query-pr.cgi?pr=137870ที่กล่าวว่าอาจเป็นเรื่องดีที่ทุกคนในเดนมาร์กใช้รูปแบบวันที่ ISO
gcb

@gcb: ดังนั้นเราควรใช้en_DKหรือไม่?
einpoklum

4
@einpoklum เป็นวิธีแก้ปัญหาสำหรับประเทศที่พูดภาษาอังกฤษไม่มีรูปแบบ ISO สำหรับชื่อวันธรรมดา การอภิปรายเกี่ยวกับข้อผิดพลาดสำหรับ glibc นี้ค่อนข้างให้ข้อมูล (คุณต้องอ่าน Ulrich Drepper ที่ผ่านมาด้วยความโกรธ): sourceware.org/bugzilla/show_bug.cgi?id=4628
Sekenre

8

มีการอธิบายความยาวในคู่มือนี้: http://ccollins.wordpress.com/2009/01/06/how-to-change-date-formats-on-ubuntu/


ฉันไปและพบการเชื่อมโยงตั้งแต่ prestiginate บอกว่าเขาไม่สามารถโพสต์เชื่อมโยงหลายมิติ จริง ๆ แล้วฉันเคยไปที่นั่นมาก่อน แต่ฉันคิดว่าฉันไม่เคยใส่ใจที่จะทำมันบนเครื่องนี้ทำให้ฉันคิดว่าสิ่งที่ฉันพยายามมาก่อนไม่ได้ผล
Neil

หากใครต้องการสตริง Unicode สำหรับวันที่ ISO <U002b><U0025><U0059><U002d><U0025><U004d><U002d><U0025><U0064>ก็ สายไพ ธ อนที่ทำสิ่งนี้คือ:''.join(['<U00{}>'.format(hex(b)[-2:]) for b in '+%Y-%M-%d'.encode('UTF-8')])
บางส่วนของ

3

เปิดlocale.confด้วยโปรแกรมแก้ไขของคุณ

# $EDITOR /etc/locale.conf

และแทรกบรรทัด

TIME_STYLE=iso

หลังจากบันทึกไฟล์ที่เรียกใช้

# locale-gen
# env-update && source /etc/profile

และทดสอบผลลัพธ์

# ls -al /home
drwxr-xr-x   8 root             root      4096 2011-12-2  .
...

2
Distro คืออะไร ตัวอย่างเช่นบน Ubuntu ไฟล์นั้นไม่มีอยู่จริง
0xC0000022L

@ 0xC0000022L มันจะเหมือนกันสำหรับอูบุนตูที่นี่เป็น manpage manpages.ubuntu.com/manpages/artful/man5/locale.conf.5.html
โจนัสไตน์

ง่ายต่อการสองวันครึ่งปีต่อมาและการอ้างอิงรุ่นที่ไม่มีอยู่ในปี 2014 หรือ 2015;)
0xC0000022L

2

บางคนแนะนำให้เปลี่ยนท้องถิ่นของคุณเป็น "en_DK" งานประเภทนี้หากคุณไม่สนใจชื่อวันและเดือนที่เป็นภาษาเยอรมัน เนื่องจากฉันไม่สามารถโพสต์ไฮเปอร์ลิงก์ได้และบอร์ดนี้เห็นคำสั่ง linux ของฉันเป็นไฮเปอร์ลิงก์ .... (ดีมาก) ... ฉันสามารถพูดได้ว่าคุณค้นหา (google) วิธีการเปลี่ยนวันที่รูปแบบบนอูบุนตูและคลิก ลิงค์แรก


1
เขาหมายถึงลิงค์นี้: ccollins.wordpress.com/2009/01/06/…
Neil

2
en_DK ไม่ใช่ภาษาเยอรมันอย่างใดอย่างหนึ่งก็เดนมาร์ก
GodEater

มันไม่ใช่ "en" เป็นภาษาอังกฤษ ส่วน "DK" คือประเทศที่ตั้งค่าสิ่งต่าง ๆ เช่นสัญลักษณ์สกุลเงินรูปแบบวันที่และตัวแยกทศนิยมเป็นต้นส่วนแรกคือภาษาซึ่งจะเป็นตัวกำหนดชื่อเดือน
gcb

1

อาจเป็นวิธีที่ดีที่สุดในการทำสิ่งนี้ แต่ไม่ทำลายสิ่งต่าง ๆ คือทำตามคำแนะนำที่

http://ccollins.wordpress.com/2009/01/06/how-to-change-date-formats-on-ubuntu/


ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
เจนนี่ D
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.