Mercurial > babel > old > mirror
annotate doc/formatting.txt @ 93:30ed605cff51
Changed translator comments extraction behaviour in python source code. Match is now true only if the TAG is on the start of the comment. The TAG will also be stripped from the comment. Added a unittest which tests this.
author | palgarvio |
---|---|
date | Mon, 11 Jun 2007 22:27:24 +0000 |
parents | cf94e70a77f3 |
children | 3eaa652b1216 |
rev | line source |
---|---|
4 | 1 .. -*- mode: rst; encoding: utf-8 -*- |
2 | |
3 ========================== | |
4 Number and Date Formatting | |
5 ========================== | |
6 | |
7 | |
8 .. contents:: Contents | |
9 :depth: 2 | |
10 .. sectnum:: | |
11 | |
12 | |
20
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
13 Date Formatting |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
14 =============== |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
15 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
16 When working with date and time information in Python, you commonly use the |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
17 classes ``date``, ``datetime`` and/or ``time`` from the `datetime package`_. |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
18 Babel provides functions for locale-specific formatting of those objects in its |
42 | 19 ``dates`` module: |
20 | |
21 .. code-block:: pycon | |
20
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
22 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
23 >>> from datetime import date, datetime, time |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
24 >>> from babel.dates import format_date, format_datetime, format_time |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
25 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
26 >>> d = date(2007, 4, 1) |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
27 >>> format_date(d, locale='en') |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
28 u'Apr 1, 2007' |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
29 >>> format_date(d, locale='de_DE') |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
30 u'01.04.2007' |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
31 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
32 As this example demonstrates, Babel will automatically choose a date format |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
33 that is appropriate for the requested locale. |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
34 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
35 The ``format_*()`` functions also accept an optional ``format`` argument, which |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
36 allows you to choose between one of four format variations: |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
37 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
38 * ``short``, |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
39 * ``medium`` (the default), |
22 | 40 * ``long``, and |
41 * ``full``. | |
20
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
42 |
42 | 43 For example: |
44 | |
45 .. code-block:: pycon | |
20
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
46 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
47 >>> format_date(d, format='short', locale='en') |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
48 u'4/1/07' |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
49 >>> format_date(d, format='long', locale='en') |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
50 u'April 1, 2007' |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
51 >>> format_date(d, format='full', locale='en') |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
52 u'Sunday, April 1, 2007' |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
53 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
54 .. _`datetime package`: http://docs.python.org/lib/module-datetime.html |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
55 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
56 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
57 Pattern Syntax |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
58 -------------- |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
59 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
60 While Babel makes it simple to use the appropriate date/time format for a given |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
61 locale, you can also force it to use custom patterns. Note that Babel uses |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
62 different patterns for specifying number and date formats compared to the |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
63 Python equivalents (such as ``time.strftime()``), which have mostly been |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
64 inherited from C and POSIX. The patterns used in Babel are based on the |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
65 `Locale Data Markup Language specification`_ (LDML), which defines them as |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
66 follows: |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
67 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
68 A date/time pattern is a string of characters, where specific strings of |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
69 characters are replaced with date and time data from a calendar when formatting |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
70 or used to generate data for a calendar when parsing. […] |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
71 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
72 Characters may be used multiple times. For example, if ``y`` is used for the |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
73 year, ``yy`` might produce "99", whereas ``yyyy`` produces "1999". For most |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
74 numerical fields, the number of characters specifies the field width. For |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
75 example, if ``h`` is the hour, ``h`` might produce "5", but ``hh`` produces |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
76 "05". For some characters, the count specifies whether an abbreviated or full |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
77 form should be used […] |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
78 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
79 Two single quotes represent a literal single quote, either inside or outside |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
80 single quotes. Text within single quotes is not interpreted in any way (except |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
81 for two adjacent single quotes). |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
82 |
42 | 83 For example: |
84 | |
85 .. code-block:: pycon | |
20
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
86 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
87 >>> d = date(2007, 4, 1) |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
88 >>> format_date(d, "EEE, MMM d, ''yy", locale='en') |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
89 u"Sun, Apr 1, '07" |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
90 >>> format_date(d, "EEEE, d.M.yyyy", locale='de') |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
91 u'Sonntag, 1.4.2007' |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
92 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
93 >>> t = time(15, 30) |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
94 >>> format_time(t, "hh 'o''clock' a", locale='en') |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
95 u"03 o'clock PM" |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
96 >>> format_time(t, 'H:mm a', locale='de') |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
97 u'15:30 nachm.' |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
98 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
99 >>> dt = datetime(2007, 4, 1, 15, 30) |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
100 >>> format_datetime(dt, "yyyyy.MMMM.dd GGG hh:mm a", locale='en') |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
101 u'02007.April.01 AD 03:30 PM' |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
102 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
103 The syntax for custom datetime format patterns is described in detail in the |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
104 the `Locale Data Markup Language specification`_. The following table is just a |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
105 relatively brief overview. |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
106 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
107 .. _`Locale Data Markup Language specification`: http://unicode.org/reports/tr35/#Date_Format_Patterns |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
108 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
109 ----------- |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
110 Date Fields |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
111 ----------- |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
112 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
113 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
114 | Field | Symbol | Description | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
115 +==========+========+========================================================+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
116 | Era | ``G`` | Replaced with the era string for the current date. One | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
117 | | | to three letters for the abbreviated form, four | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
118 | | | lettersfor the long form, five for the narrow form | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
119 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
120 | Year | ``y`` | Replaced by the year. Normally the length specifies | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
121 | | | the padding, but for two letters it also specifies the | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
122 | | | maximum length. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
123 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
124 | | ``Y`` | Same as ``y`` but uses the ISO year-week calendar. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
125 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
126 | | ``u`` | ?? | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
127 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
128 | Quarter | ``Q`` | Use one or two for the numerical quarter, three for | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
129 | | | the abbreviation, or four for the full name. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
130 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
131 | | ``q`` | Use one or two for the numerical quarter, three for | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
132 | | | the abbreviation, or four for the full name. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
133 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
134 | Month | ``M`` | Use one or two for the numerical month, three for the | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
135 | | | abbreviation, or four for the full name, or five for | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
136 | | | the narrow name. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
137 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
138 | | ``L`` | Use one or two for the numerical month, three for the | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
139 | | | abbreviation, or four for the full name, or 5 for the | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
140 | | | narrow name. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
141 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
142 | Week | ``w`` | Week of year. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
143 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
144 | | ``W`` | Week of month. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
145 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
146 | Day | ``d`` | Day of month. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
147 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
148 | | ``D`` | Day of year. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
149 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
150 | | ``F`` | Day of week in month. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
151 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
152 | | ``g`` | ?? | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
153 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
154 | Week day | ``E`` | Day of week. Use one through three letters for the | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
155 | | | short day, or four for the full name, or five for the | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
156 | | | narrow name. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
157 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
158 | | ``e`` | Local day of week. Same as E except adds a numeric | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
159 | | | value that will depend on the local starting day of | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
160 | | | the week, using one or two letters. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
161 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
162 | | ``c`` | ?? | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
163 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
164 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
165 ----------- |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
166 Time Fields |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
167 ----------- |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
168 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
169 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
170 | Field | Symbol | Description | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
171 +==========+========+========================================================+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
172 | Period | ``a`` | AM or PM | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
173 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
174 | Hour | ``h`` | Hour [1-12]. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
175 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
176 | | ``H`` | Hour [0-23]. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
177 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
178 | | ``K`` | Hour [0-11]. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
179 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
180 | | ``k`` | Hour [1-24]. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
181 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
182 | Minute | ``m`` | Use one or two for zero places padding. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
183 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
184 | Second | ``s`` | Use one or two for zero places padding. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
185 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
186 | | ``S`` | Fractional second, rounds to the count of letters. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
187 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
188 | | ``A`` | Milliseconds in day. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
189 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
190 | Timezone | ``z`` | Use one to three letters for the short timezone or | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
191 | | | four for the full name. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
192 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
193 | | ``Z`` | Use one to three letters for RFC 822, four letters for | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
194 | | | GMT format. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
195 | +--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
196 | | ``v`` | Use one letter for short wall (generic) time, four for | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
197 | | | long wall time. | |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
198 +----------+--------+--------------------------------------------------------+ |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
199 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
200 |
33 | 201 Time-Zone Support |
31 | 202 ----------------- |
203 | |
33 | 204 Many of the verbose time formats include the time-zone, but time-zone |
205 information is not by default available for the Python ``datetime`` and | |
206 ``time`` objects. The standard library includes only the abstract ``tzinfo`` | |
207 class, which you need appropriate implementations for to actually use in your | |
31 | 208 application. Babel includes a ``tzinfo`` implementation for UTC (Universal |
33 | 209 Time). |
210 | |
211 For real time-zone support, it is strongly recommended that you use the | |
31 | 212 third-party package `pytz`_, which includes the definitions of practically all |
213 of the time-zones used on the world, as well as important functions for | |
42 | 214 reliably converting from UTC to local time, and vice versa: |
215 | |
216 .. code-block:: pycon | |
31 | 217 |
218 >>> from datetime import time | |
36 | 219 >>> from pytz import timezone, utc |
220 >>> dt = datetime(2007, 04, 01, 15, 30, tzinfo=utc) | |
221 >>> eastern = timezone('US/Eastern') | |
222 >>> format_datetime(dt, 'H:mm Z', tzinfo=eastern, locale='en_US') | |
223 u'11:30 -0400' | |
31 | 224 |
225 The recommended approach to deal with different time-zones in a Python | |
226 application is to always use UTC internally, and only convert from/to the users | |
227 time-zone when accepting user input and displaying date/time data, respectively. | |
36 | 228 You can use Babel together with ``pytz`` to apply a time-zone to any |
229 ``datetime`` or ``time`` object for display, leaving the original information | |
42 | 230 unchanged: |
231 | |
232 .. code-block:: pycon | |
36 | 233 |
234 >>> british = timezone('Europe/London') | |
235 >>> format_datetime(dt, 'H:mm zzzz', tzinfo=british, locale='en_US') | |
236 u'16:30 British Summer Time' | |
31 | 237 |
37 | 238 Here, the given UTC time is adjusted to the "Europe/London" time-zone, and |
239 daylight savings time is taken into account. Daylight savings time is also | |
240 applied to ``format_time``, but because the actual date is unknown in that | |
241 case, the current day is assumed to determine whether DST or standard time | |
242 should be used. | |
243 | |
31 | 244 .. _`pytz`: http://pytz.sourceforge.net/ |
245 | |
246 | |
20
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
247 Parsing Dates |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
248 ------------- |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
249 |
42 | 250 Babel can also parse date and time information in a locale-sensitive manner: |
251 | |
252 .. code-block:: pycon | |
20
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
253 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
254 >>> from babel.dates import parse_date, parse_datetime, parse_time |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
255 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
256 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
257 Number Formatting |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
258 ================= |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
259 |
34 | 260 Support for locale-specific formatting and parsing of numbers is provided by |
42 | 261 the ``babel.numbers`` module: |
262 | |
263 .. code-block:: pycon | |
34 | 264 |
265 >>> from babel.numbers import format_number, format_decimal, format_percent | |
266 | |
42 | 267 Examples: |
268 | |
269 .. code-block:: pycon | |
34 | 270 |
271 >>> format_decimal(1.2345, locale='en_US') | |
272 u'1.234' | |
273 >>> format_decimal(1.2345, locale='sv_SE') | |
274 u'1,234' | |
275 >>> format_decimal(12345, locale='de_DE') | |
276 u'12.345' | |
277 | |
20
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
278 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
279 Pattern Syntax |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
280 -------------- |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
281 |
34 | 282 While Babel makes it simple to use the appropriate number format for a given |
283 locale, you can also force it to use custom patterns. As with date/time | |
284 formatting patterns, the patterns Babel supports for number formatting are | |
285 based on the `Locale Data Markup Language specification`_ (LDML). | |
286 | |
42 | 287 Examples: |
288 | |
289 .. code-block:: pycon | |
34 | 290 |
291 >>> format_decimal(-1.2345, format='#,##0.##;-#', locale='en') | |
292 u'-1.23' | |
293 >>> format_decimal(-1.2345, format='#,##0.##;(#)', locale='en') | |
294 u'(1.23)' | |
295 | |
296 The syntax for custom number format patterns is described in detail in the | |
297 the specification. The following table is just a relatively brief overview. | |
298 | |
299 +----------+-----------------------------------------------------------------+ | |
300 | Symbol | Description | | |
301 +==========+=================================================================+ | |
302 | ``0`` | Digit | | |
303 +----------+-----------------------------------------------------------------+ | |
304 | ``1-9`` | '1' through '9' indicate rounding. | | |
305 +----------+-----------------------------------------------------------------+ | |
306 | ``@`` | Significant digit | | |
307 +----------+-----------------------------------------------------------------+ | |
308 | ``#`` | Digit, zero shows as absent | | |
309 +----------+-----------------------------------------------------------------+ | |
310 | ``.`` | Decimal separator or monetary decimal separator | | |
311 +----------+-----------------------------------------------------------------+ | |
312 | ``-`` | Minus sign | | |
313 +----------+-----------------------------------------------------------------+ | |
314 | ``,`` | Grouping separator | | |
315 +----------+-----------------------------------------------------------------+ | |
316 | ``E`` | Separates mantissa and exponent in scientific notation | | |
317 +----------+-----------------------------------------------------------------+ | |
318 | ``+`` | Prefix positive exponents with localized plus sign | | |
319 +----------+-----------------------------------------------------------------+ | |
320 | ``;`` | Separates positive and negative subpatterns | | |
321 +----------+-----------------------------------------------------------------+ | |
322 | ``%`` | Multiply by 100 and show as percentage | | |
323 +----------+-----------------------------------------------------------------+ | |
324 | ``‰`` | Multiply by 1000 and show as per mille | | |
325 +----------+-----------------------------------------------------------------+ | |
326 | ``¤`` | Currency sign, replaced by currency symbol. If doubled, | | |
327 | | replaced by international currency symbol. If tripled, uses the | | |
328 | | long form of the decimal symbol. | | |
329 +----------+-----------------------------------------------------------------+ | |
330 | ``'`` | Used to quote special characters in a prefix or suffix | | |
331 +----------+-----------------------------------------------------------------+ | |
332 | ``*`` | Pad escape, precedes pad character | | |
333 +----------+-----------------------------------------------------------------+ | |
334 | |
20
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
335 |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
336 Parsing Numbers |
dce4cfd4ba5d
Started documentation for date formatting, plus some code tweaks in that area.
cmlenz
parents:
4
diff
changeset
|
337 --------------- |
34 | 338 |
42 | 339 Babel can also parse numeric data in a locale-sensitive manner: |
340 | |
341 .. code-block:: pycon | |
34 | 342 |
36 | 343 >>> from babel.numbers import parse_decimal, parse_number |
34 | 344 |
42 | 345 Examples: |
346 | |
347 .. code-block:: pycon | |
34 | 348 |
349 >>> parse_decimal('1,099.98', locale='en_US') | |
350 1099.98 | |
351 >>> parse_decimal('1.099,98', locale='de') | |
352 1099.98 | |
353 >>> parse_decimal('2,109,998', locale='de') | |
354 Traceback (most recent call last): | |
42 | 355 ... |
34 | 356 NumberFormatError: '2,109,998' is not a valid decimal number |