AbstractTime.st
changeset 13175 ea7102cce519
parent 13082 355cecbba1cd
child 13233 3a2e185a54ac
--- a/AbstractTime.st	Mon Dec 20 14:10:21 2010 +0100
+++ b/AbstractTime.st	Mon Dec 20 14:34:54 2010 +0100
@@ -864,7 +864,8 @@
 
 addPrintBindingsTo:aDictionary language:languageOrNil
     "private print support: add bindings for printing to aDictionary.
-     languageOrNil can only be #en or nil for the current language.
+     languageOrNil can be #en, #fr, #de or nil for the current language.
+
      bindings:
         %h      hours, 00..23 (i.e. european)  0-padded to length 2
         %u      hours, 00..12 (i.e. us)        0-padded to length 2
@@ -891,19 +892,36 @@
 
         %(TZD)  timeZone delta from UTC in the format +/-hh:mm  
 
-        %milli1 milliseconds, truncated to 1/10th of a second 0..9         
-        %milli2 milliseconds, truncated to 1/100th of a second 00..99 0-padded to length 2        
-
-        %nth           - counting day-in-month (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
-        %weekDayNth    - counting day-in-week (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
-        %weekNth       - counting week-in-year (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
+        %(milli1) milliseconds, truncated to 1/10th of a second 0..9         
+        %(milli2) milliseconds, truncated to 1/100th of a second 00..99 0-padded to length 2        
 
      Timestamp only:
-        %Day    day - unpadded                    
-        %Month  month - unpadded                    
-        %(yearOrTime)  year or time 5 digits    as in unix-ls:
-                                                year if it is not the current year;
-                                                time otherwise
+        %(Day)         - day - unpadded                    
+        %(Month)       - month - unpadded                    
+        %(yearOrTime)  - year or time 5 digits    as in unix-ls:
+                                                  year if it is not the current year;
+                                                  time otherwise
+        %(weekDay)      - day in week (1->monday, 2->tuesday, ... ,7->sunday)
+
+        %(dayName)      - full day name     
+        %(DayName)      - full day name, first character uppercase      
+        %(DAYNAME)      - full day name, all uppercase       
+
+        %(monthName)    - full month name     
+        %(MonthName)    - full month name, first character uppercase      
+        %(MONTHNAME)    - full month name, all uppercase       
+
+        %(shortDayName) - short (abbreviated) day name     
+        %(ShortDayName) - short (abbreviated) day name, first character uppercase      
+        %(SHORTDAYNAME) - short (abbreviated) day name, all uppercase       
+
+        %(shortMonthName) - short (abbreviated) month name     
+        %(ShortMonthName) - short (abbreviated) month name, first character uppercase      
+        %(SHORTMONTHNAME) - short (abbreviated) month name, all uppercase       
+
+        %(nth)          - counting day-in-month (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
+        %(weekDayNth)   - counting day-in-week (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
+        %(weekNth)      - counting week-in-year (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')
 
 
      The ISO8601 printString are generated with:
@@ -989,84 +1007,9 @@
 
 printOn:aStream format:aFormatString
     "print using a format string;
-     valid format items are:
-        %h      hours, 00..23 (i.e. european)  0-padded to length 2
-        %u      hours, 00..12 (i.e. us)        0-padded to length 2
-        %m      minutes, 00..59                0-padded to length 2
-        %s      seconds, 00..59                0-padded to length 2
-        %i      milliseconds, 000..999         0-padded to length 3
-        %a      am/pm
-
-     Timestamp only:
-        %(day)   day, 00..31                    0-padded to length 2
-        %(month) month, 00..12                  0-padded to length 2
-        %(year)  year, 4 digits                 0-padded to length 4
-
-     special:
-        %H      24-hours - unpadded
-        %U      12-hours - unpadded
-        %M      minutes - unpadded
-        %S      seconds - unpadded
-        %I      milliseconds, unpadded
-        %A      AM/PM   - uppercase
-
-        %t      seconds within hour  (unpadded)
-        %T      seconds from midNight  (unpadded)
-
-        %(TZD)  timeZone delta from UTC in the format +/-hh:mm  
-
-        %milli1 milliseconds, truncated to 1/10th of a second 0..9         
-        %milli2 milliseconds, truncated to 1/100th of a second 00..99 0-padded to length 2        
-
-        %nth           - counting day-in-month (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
-        %weekDayNth    - counting day-in-week (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
-        %weekNth       - counting week-in-year (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
+     See #addPrintBindingsTo:language: for allowed format strings"
 
-     Timestamp only:
-        %Day    day - unpadded                    
-        %Month  month - unpadded                    
-        %(yearOrTime)  year or time 5 digits    as in unix-ls:
-                                                year if it is not the current year;
-                                                time otherwise
-
-
-     The ISO8601 printString are generated with:
-
-       Year:
-          YYYY (eg 1997)
-                Date today printStringFormat:'%(year)'
-                Timestamp now printStringFormat:'%(year)'  
-
-       Year and month:
-          YYYY-MM (eg 1997-07)
-                Date today printStringFormat:'%(year)-%(month)'  
-                Timestamp now printStringFormat:'%(year)-%(month)'  
-
-       Complete date:
-          YYYY-MM-DD (eg 1997-07-16)
-                Date today printStringFormat:'%(year)-%(month)-%(day)'    
-                Timestamp now printStringFormat:'%(year)-%(month)-%(day)'  
-
-       Complete date plus hours and minutes:
-          YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
-                Timestamp now printStringFormat:'%(year)-%(month)-%(day)T%h:%m%(TZD)'  
-
-       Complete date plus hours, minutes and seconds:
-          YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
-                Timestamp now printStringFormat:'%(year)-%(month)-%(day)T%h:%m:%s%(TZD)'  
-
-       Complete date plus hours, minutes, seconds and a decimal fraction of a second
-          YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)
-                Timestamp now printStringFormat:'%(year)-%(month)-%(day)T%h:%m:%s.%(milli2)%(TZD)'  
-
-    "
-
-    |dict|
-
-    dict := IdentityDictionary new.
-    self addPrintBindingsTo:dict.
-
-    aFormatString expandPlaceholdersWith:dict on:aStream
+    self printOn:aStream format:aFormatString language:nil.
 
     "
      Timestamp now printOn:Transcript format:'%h:%m:%s'   . Transcript cr.      
@@ -1083,77 +1026,7 @@
 
 printOn:aStream format:aFormatString language:languageString
     "print using a format string;
-     valid format items are:
-        %h      hours, 00..23 (i.e. european)  0-padded to length 2
-        %u      hours, 00..12 (i.e. us)        0-padded to length 2
-        %m      minutes, 00..59                0-padded to length 2
-        %s      seconds, 00..59                0-padded to length 2
-        %i      milliseconds, 000..999         0-padded to length 3
-        %a      am/pm
-
-     Timestamp only:
-        %(day)   day, 00..31                    0-padded to length 2
-        %(month) month, 00..12                  0-padded to length 2
-        %(year)  year, 4 digits                 0-padded to length 4
-
-     special:
-        %H      24-hours - unpadded
-        %U      12-hours - unpadded
-        %M      minutes - unpadded
-        %S      seconds - unpadded
-        %I      milliseconds, unpadded
-        %A      AM/PM   - uppercase
-
-        %t      seconds within hour  (unpadded)
-        %T      seconds from midNight  (unpadded)
-
-        %(TZD)  timeZone delta from UTC in the format +/-hh:mm  
-
-        %milli1 milliseconds, truncated to 1/10th of a second 0..9         
-        %milli2 milliseconds, truncated to 1/100th of a second 00..99 0-padded to length 2        
-
-        %nth           - counting day-in-month (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
-        %weekDayNth    - counting day-in-week (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
-        %weekNth       - counting week-in-year (1->'st'; 2->'nd'; 3->'rd'; 4...->'th')      
-
-     Timestamp only:
-        %Day    day - unpadded                    
-        %Month  month - unpadded                    
-        %(yearOrTime)  year or time 5 digits    as in unix-ls:
-                                                year if it is not the current year;
-                                                time otherwise
-
-
-     The ISO8601 printString are generated with:
-
-       Year:
-          YYYY (eg 1997)
-                Date today printStringFormat:'%(year)'
-                Timestamp now printStringFormat:'%(year)'  
-
-       Year and month:
-          YYYY-MM (eg 1997-07)
-                Date today printStringFormat:'%(year)-%(month)'  
-                Timestamp now printStringFormat:'%(year)-%(month)'  
-
-       Complete date:
-          YYYY-MM-DD (eg 1997-07-16)
-                Date today printStringFormat:'%(year)-%(month)-%(day)'    
-                Timestamp now printStringFormat:'%(year)-%(month)-%(day)'  
-
-       Complete date plus hours and minutes:
-          YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
-                Timestamp now printStringFormat:'%(year)-%(month)-%(day)T%h:%m%(TZD)'  
-
-       Complete date plus hours, minutes and seconds:
-          YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
-                Timestamp now printStringFormat:'%(year)-%(month)-%(day)T%h:%m:%s%(TZD)'  
-
-       Complete date plus hours, minutes, seconds and a decimal fraction of a second
-          YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)
-                Timestamp now printStringFormat:'%(year)-%(month)-%(day)T%h:%m:%s.%(milli2)%(TZD)'  
-
-    "
+     See #addPrintBindingsTo:language: for allowed format strings"
 
     |dict|
 
@@ -1176,13 +1049,10 @@
 !
 
 printStringFormat:aFormatString
-    "print using a format string  - see #printOn:format:"
-
-    |s|
+    "print using a format string.
+     See #addPrintBindingsTo:language: for allowed format strings"
 
-    s := WriteStream on:(String new:20).
-    self printOn:s format:aFormatString.
-    ^ s contents.
+    ^ self printStringFormat:aFormatString language:nil.
 
     "
      Timestamp now printStringFormat:'%U:%m:%s %a'   
@@ -1209,7 +1079,8 @@
 !
 
 printStringFormat:aFormatString language:languageString
-    "print using a format string  - see #printOn:format:"
+    "print using a format string.
+     See #addPrintBindingsTo:language: for allowed format strings"
 
     |s|
 
@@ -1228,7 +1099,9 @@
      Timestamp now printStringFormat:'%H:%m:%s.%(milli1)'   
      Timestamp now printStringFormat:'%H:%m:%s.%(milli2)'     
      Timestamp now printStringFormat:'%(day)-%(month)-%(year) :%m:%s'       
-     Timestamp now printStringFormat:'%(day)-%(monthName)-%(year) :%m:%s'       
+     Timestamp now printStringFormat:'%(day)-%(monthName)-%(year) :%m:%s' language:#en      
+     Timestamp now printStringFormat:'%(day)-%(monthName)-%(year) :%m:%s' language:#de      
+     Timestamp now printStringFormat:'%(day)-%(monthName)-%(year) :%m:%s' language:#fr      
      Time now printStringFormat:'%u:%m:%s %a'   
      Time now printStringFormat:'%h:%m'         
      Time now printStringFormat:'%h:%m'         
@@ -1290,9 +1163,9 @@
 !AbstractTime class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.71 2010-09-29 09:15:08 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.72 2010-12-20 13:34:54 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.71 2010-09-29 09:15:08 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.72 2010-12-20 13:34:54 stefan Exp $'
 ! !