[whatwg] Date Update?

Garrett Smith dhtmlkitchen at gmail.com
Tue May 27 20:36:20 PDT 2014


On 5/25/14, Norbert Lindenberg <ecmascript at lindenbergsoftware.com> wrote:
> On May 19, 2014, at 11:34 , Garrett Smith <dhtmlkitchen at gmail.com> wrote:
>
>> On 1/19/14, Norbert Lindenberg <ecmascript at lindenbergsoftware.com> wrote:
>>>
>>> On Jan 19, 2014, at 10:01 , Jasper St. Pierre <jstpierre at mecheye.net>
>>> wrote:
>>>
>>>> On Sunday, January 19, 2014, Garrett Smith <dhtmlkitchen at gmail.com>
>>>> wrote:
>>>>
>>>

[...]

> I should have clarified my assumption that we're talking about locale
> sensitive parsing, since your case below appears to be about locale
> independent parsing.
>

Locale-sensitive for event view/CrUD by users in multiple timezones.

>> Case:
>>
>> Server sends back JSON that is used to build a calendar component or
>> Gantt chart
>>
>> The application parses the start and end of the times given over the
>> JSON (and I have some JSON in the application that I am developing
>> right now; see below).
>
> Since the start and end times are parsed by the application (and not
> directly presented to the user), they should be represented in a locale
> independent form. If they're just points in time, you can use either a JSON
> number representing the time value of a Date object, or a JSON string in
> ECMAScript Date Time String Format with "Z". If not, please clarify your
> requirements.

The start and end dates are shown in the UI. Locale-sensitive display
is needed for CrUD with multiple timezones and users in multiple
timezones.

Given a logged-in user with an application-stored
timezone:

Backend (BE) stores events in UTC. Event dates are
transmitted as an ISO string, local to that event, to the user.


5pm CA --> 12am UTC
12am UTC --> 8am China

We're in DST here.

Even when the CA user is travelling to Hawaii, the event starting from
5pm in CA time is displayed in the app as 5pm, and not 8pm (which will
be shown on his system clock at that moment).


Question: If the even starts at 2am and ends immediately
after 3 am, on May 9, how long is it?


I want something like:

 zonedDate.setTimezoneOffset("America/New_York")

This would allow the user to change start and end times and
the duration would be correct.


>> exactly according to the dates and times specified. For example, if
>> the event starts on 2014-01-01
>
> 2014-01-11, to match the 10/31 below?
>
No, the element is positioned ten thirty-firsts of the
way through that month; the month is an LI element,
and yes; that's background info.

> Operating systems already have ways to let the user select their time zones,

Hopefully they're not so limited as the UI they display.
Macs to miss a lot of cases. E.g. Navajo Nation. (Probably
it should be named Macbook Amateur.


> [3] http://norbertlindenberg.com/ecmascript/intl.html#sec-12.3.3
>

| The function returns a new object whose properties
| and attributes are set as if constructed by an object
| literal assigning to each of the following properties the
| value of the corresponding internal property of this
| DateTimeFormat object (see 12.4): locale, calendar,
| numberingSystem, timeZone, hour12, weekday, era,
| year, month, day, hour, minute, second, and timeZoneName.
| Properties whose corresponding internal properties are
| not present are not assigned.

Does it allow me to get a TZO or just the timezone back?

dateObj.getTimezoneOffset("America/Shiprock") would fit what I
need.

You mixed lexical grammar ("object literal"), properties of an object,
and behavior in a very confusing paragraph. I reread it a bunch of
times but can't squint my brain quite right enough to grok it. hourNo0
seems like something to force midnight to be zero, but instead it
mentions 11 vs 12.

Other problems:
Timezones cannot be referred to as static offsets. If that lets me set
an IANA timezone and then add that to a calendar, and then calculate
the correct tzo based on an ISO local date format.

DST rules change and ES5 allows implementations to apply the
changes proactively/retroactively. That's unreliable.

ES5 ISO implementation is broken.

IANA timezones account for leap seconds. ECMA forbids
leap seconds. How do you intend to reconcile this?
-- 
Garrett
@xkit
ChordCycles.com
garretts.github.io


More information about the es-discuss mailing list