iso date format
Giorgos Keramidas
keramida at ceid.upatras.gr
Thu Oct 26 21:26:10 EEST 2006
On 2006-10-26 20:56, Thanos <pampo at freemail.gr> wrote:
>On 2006-10-26 20:33, Giorgos Keramidas wrote:
>> Μόνο που το "da_DK" είναι το locale της Δανίας.
>>
>> Αν δεν ζεις μόνιμα εκεί, δε νομίζω να σου αρέσουν ιδιαίτερα
>> όλα τα άλλα που θα δεις με αυτό το locale.
>
> Γι' αυτό και δεν το δοκίμασα! Υποψιάστηκα πως το LC_TIME δεν θα
> επηρεάσει απλά την μορφή της ώρας αλλά και άλλα χαρακτηριστικά.
Αν αλλάξεις *μόνο* το LC_CTIME, κυρίως η μορφή της ώρας θα
επηρεαστεί από αυτό. Μπορεί όμως, ανάλογα με το πώς είναι
ρυθμισμένα τα locale formats στο δικό σου σύστημα να επηρεαστούν
και πράγματα όπως:
% env LC_ALL='el_GR.ISO8859-7' date '+%I:%m %p'
09:10 μμ
% env LC_ALL='da_DK.ISO8859-15' date '+%I:%m %p'
09:10 pm
%
Το ακριβές string που τυπώνεται όταν κάποιος `δείχνει' ώρες `προ
μεσημβρίας' και `μετά μεσημβρίας' είναι διαφορετικό σε κάθε χώρα
του κόσμου.
> Οπότε το ερώτημα παραμένει. Πως "λέω" στο σύστημα μου να έχει
> την μορφή YYYY-MM-DD HH:MM στην ημερομηνία/ώρα?
Δεν το λες `στο σύστημα'. Το λες στην εφαρμογή σου.
Οι LC_XXX μεταβλητές επηρεάζουν τον τρόπο με τον οποίο δουλεύει η
strftime(3) κλήση της standard C library. Αν εσύ ζητήσεις από
την strftime() την ώρα με format "%Y-%m-%d %H:%M:%S", θα σου
δείξει αυτό που θέλεις. Αν τη ζητήσεις με άλλο format, θα σου
δείξει κάτι άλλο.
Αυτό που θέλεις δεν είναι θέμα ρύθμισης του `συστήματος', αλλά
θέμα παραμετροποίησης κ ρύθμισης της Χ εφαρμογής.
> Υπάρχει κάποια λίστα με τις πιθανές τιμές που μπορεί να πάρει η
> LC_TIME? Μήπως π.χ. μπορώ να δώσω κάτι σαν:
>
> LC_TIME=YYYY-MM-DD HH:MM
Οχι, δεν παίζει έτσι.
> Ή δέχεται μόνο τιμές που δηλώνουν το locale και τα υπόλοιπα τα
> αναλαμβάνει το locale?
Ναι. Οι σωστές τιμές στο δικό μου σύστημα π.χ. είναι όσες
εμφανίζονται με:
% locale -a | more
Το πώς και γιατί αυτές κανονίζουν τι θα φανεί όταν εσύ ζητήσεις
από την strftime() να σου δείξει την ημερομηνία ή την ώρα είναι
από πριν ορισμένο στα locale data files. Αυτά τα data files στο
δικό μου σύστημα βρίσκονται με:
% ls -ld /usr/share/locale/*
Για παράδειγμα, το binary αρχείο με τα LC_TIME δεδομένα/strings
εδώ περιέχει τα εξής:
% ls -l /usr/share/locale/el_GR.ISO8859-7/LC_TIME
-r--r--r-- 1 root wheel - 433 Oct 23 13:23 /usr/share/locale/el_GR.ISO8859-7/LC_TIME
% hd /usr/share/locale/el_GR.ISO8859-7/LC_TIME
00000000 c9 e1 ed 0a d6 e5 e2 0a cc e1 f1 0a c1 f0 f1 0a |Ιαν.Φεβ.Μαρ.Απρ.|
00000010 cc e1 fa 0a c9 ef ed 0a c9 ef eb 0a c1 f5 e3 0a |Μαϊ.Ιον.Ιολ.Αυγ.|
00000020 d3 e5 f0 0a cf ea f4 0a cd ef e5 0a c4 e5 ea 0a |Σεπ.Οκτ.Νοε.Δεκ.|
00000030 c9 e1 ed ef f5 e1 f1 df ef f5 0a d6 e5 e2 f1 ef |Ιανουαρίου.Φεβρο|
00000040 f5 e1 f1 df ef f5 0a cc e1 f1 f4 df ef f5 0a c1 |υαρίου.Μαρτίου.Α|
00000050 f0 f1 e9 eb df ef f5 0a cc e1 c0 ef f5 0a c9 ef |πριλίου.Μαΐου.Ιο|
00000060 f5 ed df ef f5 0a c9 ef f5 eb df ef f5 0a c1 f5 |υνίου.Ιουλίου.Αυ|
00000070 e3 ef fd f3 f4 ef f5 0a d3 e5 f0 f4 e5 ec e2 f1 |γούστου.Σεπτεμβρ|
00000080 df ef f5 0a cf ea f4 f9 e2 f1 df ef f5 0a cd ef |ίου.Οκτωβρίου.Νο|
00000090 e5 ec e2 f1 df ef f5 0a c4 e5 ea e5 ec e2 f1 df |εμβρίου.Δεκεμβρί|
000000a0 ef f5 0a ca f5 f1 0a c4 e5 f5 0a d4 f1 e9 0a d4 |ου.Κυρ.Δευ.Τρι.Τ|
000000b0 e5 f4 0a d0 e5 ec 0a d0 e1 f1 0a d3 e1 e2 0a ca |ετ.Πεμ.Παρ.Σαβ.Κ|
000000c0 f5 f1 e9 e1 ea de 0a c4 e5 f5 f4 dd f1 e1 0a d4 |υριακή.Δευτέρα.Τ|
000000d0 f1 df f4 e7 0a d4 e5 f4 dc f1 f4 e7 0a d0 dd ec |ρίτη.Τετάρτη.Πέμ|
000000e0 f0 f4 e7 0a d0 e1 f1 e1 f3 ea e5 f5 de 0a d3 dc |πτη.Παρασκευή.Σά|
000000f0 e2 e2 e1 f4 ef 0a 25 48 3a 25 4d 3a 25 53 0a 25 |ββατο.%H:%M:%S.%|
00000100 64 2f 25 6d 2f 25 59 0a 25 61 20 25 65 20 25 62 |d/%m/%Y.%a %e %b|
00000110 20 25 58 20 25 59 0a f0 ec 0a ec ec 0a 25 61 20 | %X %Y.πμ.μμ.%a |
00000120 25 65 20 25 62 20 25 59 20 25 58 20 25 5a 0a c9 |%e %b %Y %X %Z.Ι|
00000130 e1 ed ef f5 dc f1 e9 ef f2 0a d6 e5 e2 f1 ef f5 |ανουάριος.Φεβρου|
00000140 dc f1 e9 ef f2 0a cc dc f1 f4 e9 ef f2 0a c1 f0 |άριος.Μάρτιος.Απ|
00000150 f1 df eb e9 ef f2 0a cc dc fa ef f2 0a c9 ef fd |ρίλιος.Μάϊος.Ιού|
00000160 ed e9 ef f2 0a c9 ef fd eb e9 ef f2 0a c1 fd e3 |νιος.Ιούλιος.Αύγ|
00000170 ef f5 f3 f4 ef f2 0a d3 e5 f0 f4 dd ec e2 f1 e9 |ουστος.Σεπτέμβρι|
00000180 ef f2 0a cf ea f4 fe e2 f1 e9 ef f2 0a cd ef dd |ος.Οκτώβριος.Νοέ|
00000190 ec e2 f1 e9 ef f2 0a c4 e5 ea dd ec e2 f1 e9 ef |μβριος.Δεκέμβριο|
000001a0 f2 0a 64 6d 0a 25 49 3a 25 4d 3a 25 53 20 25 70 |ς.dm.%I:%M:%S %p|
000001b0 0a |.|
000001b1
%
Αν κοιτάξεις προσεκτικά στα strings του `LC_TIME' αρχείου από τον
κατάλογο `/usr/share/locale/el_GR.ISO8859-7' θα δεις ότι κάπου
εκεί μέσα είναι ``κρυμμένα'' και πράγματα όπως ο προκαθορισμένος
τρόπος αναπαράστασης της ημερομηνίας (που για μας τους Έλληνες
είναι ``%d/%m/%Y'') κι ένα σωρό άλλα πράγματα.
More information about the Migrate2linux
mailing list