October 26, 2008

Date Formatter gets hours wrong

An English translation is available for this post...

משהו ששווה לזכור.
לאובייקט Date, ברגע שרוצים להציג אותו בצורה מעט יותר עדינה מ- timestamp, משתמשים ב- Formatter שיודע לקבל format string ומשם לפרמט אותו לפיו. אתם יודעים על מה אני מדבר - MM:DD:YY וחבורתו.
הקטע קטע מגיע שאנחנו רוצים לפרמט את השעות. את השעות אפשר לפרמט, בין היתר, בדרכים הבאות: HH, ו-JJ.
HH, מספר לנו על יום שבו השעות הן 1-24, בעוד ש-JJ מדבר על יום שבו השעות רצות מ 0-23.
זה נכון ש-HH תהיה הבחירה האינטואיטבית של כל בר-דעת (שכן, מה בדיוק JJ אמור להביע, just-joking?), אבל אם תבקשו HH, לעיתים תכופות תגלו שזה לא ממש מה שהתכוונתם אליו, ופתאום יש לכם הבדל של שעה סוררת. זה קצת מקומם אם לקוח שלכם אמור להגדיר פורמט בו הוא רוצה לראות תאריכים, ומגלה שהשעון לא מכוון, כי הוא חשב (ובצדק, לעזאזל! בצדק!) ש-HH זו הבחירה הנכונה.
אדובה...? רוצים לספר לנו משהו שאנחנו לא יודעים?

Here’s something that is worth remembering.
When you want to display the Date object in a more easy-to-understand manner than timestamp, you use the DateFormatter that receives a formatting string ant act accordingly. You know what I’m talking about – MM:DD:YY and their gang.
The trouble comes where we want to format the hours as well. This can be easily done, mong other formats, in these ways: HH and JJ. HH will be a day where the hours go from 1 to 24 and JJ will be a dat where the hours go from 0-23.
It’s true that the intuitive selection of anyone who claims to have a brain would be HH (since, what exactly does JJ stands for, Just-Joking?), but if you ask for HH in your format string you will often find that it’s not really what you meant for and suddenly you have a one hour difference. To be honest, it pretty annoying when one of your customers is trying to define her own date format, only to find that the hours are not synched, cause she thought (rightfully, god-damn, rightfully!) that HH is the right choice to make.
Adobe? Care to tell us something we don’t know?

No comments: