[whatwg] Forms-related feedback

Jonas Sicking jonas at sicking.cc
Mon Jul 29 16:50:01 PDT 2013


Ian, has *any* implementer expressed a preference for implementing a
picker which allows selecting date+time+timezone? I.e. one that
returns UTC dates?

And can you point any other platforms that has such a UI widget.

I have seen plenty of date and time pickers. But never one that also
allowed the user to set the timezone as part of the same widget.

I.e. claiming that there is *far* more widgets elsewhere which
separates picking date/times from ones that are picking
date/time/timezones. Are you really claiming that this is not the
case? This seems like a claim that needs to be backed up in some form.

Additionally, if we were to build a date+time+timezone picker, the
current API to such a picker is insufficient since a date/time
expressed in UTC is insufficient to express a date+time+timezone.

If we want to return UTC dates, I instead propose that we make the
element take a timezone as an input (through an attribute or some
such). The picker would then select just date+time but return a result
using UTC timezone.

/ Jonas

On Mon, Jul 29, 2013 at 4:21 PM, Ian Hickson <ian at hixie.ch> wrote:
> On Mon, 14 Jan 2013, Jonas Sicking wrote:
>> On Jan 8, 2013 1:47 AM, "Ian Hickson" <ian at hixie.ch> wrote:
>> > On Tue, 27 Nov 2012, Mikko Rantalainen wrote:
>> > > Ian Hickson, 2012-11-22 07:15 (Europe/Helsinki):
>> > > > On Wed, 21 Nov 2012, Mounir Lamouri wrote:
>> > > > >
>> > > > > Then, maybe a better naming could be "datetime-utc"?
>> > > >
>> > > > I think that would mislead authors into thinking that the UI that
>> > > > users will see is one that asks for a UTC time. That kind of UI is
>> > > > the worst UI for this kind of feature, so that would be
>> > > > misleading.
>> > >
>> > > I'd suggest "datetime-absolute" because the other variant is
>> > > "floating" or "relative" (to local politically decided time which
>> > > may vary depending on future political decisions).
>> >
>> > We could rename "datetime" to "datetime-absolute" and leave
>> > "datetime-local" as named, but I'm not really convinced that's much
>> > better than what we have now.
>>
>> I think it more common for people to interact mainly with people in
>> their own timezone. I.e. most time when talking about dates and times
>> people don't mention what timezone is involved and rely on context to
>> provide that information.
>
> I agree that that is accurate for when people talk. But that's somewhat
> misleading, I think, regarding what it implies about form controls.
>
> In Web apps, there's basically three cases:
>
> 1. Cases where you mean a specific global time (a time relative to UTC),
>    for coordination amongst people from many locations.
>
>      For example: the time that a broadcast begins
>                     e.g. a live Hangout on G+
>                   the time that a deliverable is due
>                     e.g. the due date for a poetry contest
>                   the time that a resource becomes available and the time
>                     it stops being available, if scheduled in advance
>                     e.g. the time that a meeting phone bridge code starts
>                          working and the time it ends working
>
> 2. Cases where you mean a specific global time (a time relative to UTC),
>    but where the time is really only relevant for local purposes, and so
>    when given is likely to be given relative to an implied time zone.
>
>      For example: the time that a plane takes off or lands
>                   the time that a physical meeting (not one involving
>                     video conferencing across multiple sites) begins
>                   the time that someone wants to go home from work
>
> 3. Cases where you mean a floating time and no time zone actually applies.
>
>      For example: a wake-up alarm on a phone ("wake me up at 8am on
>                     Monday", where the time zone isn't decided until
>                     Monday, by examining where the user is)
>                   the time for an event celebrated at different times in
>                     different time zones, e.g. New Year's.
>
> Now, when implementing these, there's often mistakes made. For example,
> authors will often confuse case 1 for case 2, and will often confuse case
> 2 for case 3. That is, they will often assume a time zone when one should
> not be assumed, and will often forget about time zones entirely when a
> time zone should be assumed.
>
> For example, they may ask for the time that a broadcast begins, and then
> just assume that the time zone is the time zone of the server. This would
> work fine in a single-time-zone-company where the server is colocated with
> the users. Similarly, they might ask for the time of a plane's departure,
> and then display it in the user's time zone, forgetting that there's an
> implied time zone given by the user's location.
>
> The opposite error is harder to make. It's harder to ignore the time zone
> when all times that the user enters get converted to UTC -- unless you're
> in the UK during the winter, or one of a handful of other countries using
> UTC, you're likely to notice right away (and even in those, in many cases
> you'll likely notice within 6 months).
>
> Because of this likelihood for mistakes, the controls are designed so that
> forgetting a time zone requires more characters than giving one. Authors
> are less likely to initially use datetime-local than datetime, so they're
> more likely to be reminded to use time zones immediately, than they are to
> forget to use time zones until too late.
>
>
>> So in most contexts when people think about a point in time, they do so
>> for a specific timezone.
>
> I don't know how to evaluate if this is true.
>
>
>> When that is not the case, this is something that people are aware of.
>> When I interact with friends/family/coworkers where the timezone is not
>> obvious this is quite clear. And in these cases I'm aware that I need to
>> specify timezone.
>
> I don't know that that's the case. I think it's more likely that authors
> will incorrectly forget to use time zones when they should have, than it
> is for them to use time zones when they should not. That, as described
> above, is the principle on which the spec's design was based.
>
>
>> So I would imagine that when a developer sees "datetime" that does not
>> include a timezone. Likewise, when a developer wants to ask the user for
>> a point in time which does include a timezone, that they would remember
>> to ask for that explicitly.
>
> Those are not the only two situations. I think another major case is the
> case where the author needs to ask for a globally specific time (i.e. a
> time with a time zone), but without making a big fuss over the time zone.
> That's the case for which <input type=datetime> is useful. I don't know if
> it is the most common case, but I would not be surprised if it was. (This
> is case 1 in the list above.)
>
> The two cases you list -- of asking for a time without a time zone, and of
> asking for a time and an explicit time zone - are the cases for which
> type=datetime-local is appropriate.
>
>
>> Additionally, in many cases even when timezones are involved do UIs not
>> ask for the timezone as part of the date/time picker.
>
> Right. You likely shouldn't (by default) show a time zone in the
> type=datetime UI.
>
>
>> When looking for airplane tickets the timezone is assumed to be that of
>> the departing location when talking about departing time, and that of
>> the arrival destination when talking about arriving time.
>> When renting a car, the same thing applies, even if the car is picked up
>> and returned in different timezones.
>
> Right; for those, you'd want datetime-local. There are definitely use
> cases for both, I don't think anyone is disputing that.
>
> You could name them in a variety of ways: datetime-local could instead be
> named datetime, datetime-floating, datetime-without-timezone, etc.
> Similarly, datetime could have instead been named datetime-global,
> datetime-utc, datetime-with-timezone, normalized-datetime,
> specific-datetime... There's lost of options.
>
> In every case, there's a tradeoff made. If we name the one without time
> zone normalisation "datetime", then authors are likely to forget time
> zones until it's harder to fix (as discussed above). If we name the one
> with normalisation "datetime-utc", author are likely to avoid it even when
> it's appropriate, because it has a scary name. If we give both of them
> long names, then authors never have the convenience of a short name. If we
> give one a short name, then we run the risk of it being ambiguous and
> confusing. These are all the normal tradeoffs we have to make whenever we
> do language design; there's nothing especially unusual about this case.
>
>
>> Even the calendar app that's on my device (the built-in calendar app for
>> Android 4.2) does not ask for timezone as part of the date/time picker.
>
> It's important not to confuse the UI with the value space. I'm not 100%
> familiar with the Android date pickers (and they have changed over time).
> In the case of HTML's, there's a picker that picks a floating time and
> there's a picker that picks a specific time. They can in fact have the
> same UI. The one with the time-zone normalisation _could_, in advanced
> UAs, allow the user to pick an explicit time zone to give the time in, but
> that time zone isn't then transmitted to the author. The one without
> time-zone normalisation is in fact the one most likely to be used in UIs
> that include explicit time zone pickers.
>
> I think the Android pickers are actually more equivalent to type=date +
> time=time, rather than either form of type=datetime/datetime-local.
>
>
>> Instead a separate control is used where the user can choose what
>> timezone the separately entered date/time is. This makes a lot of sense
>> since timezones are easy to forget about and so having explicit and
>> separate UI makes things more unlikely that the user will forget to
>> enter the information.
>
> In the cases where the user is expected to explicitly enter the time zone,
> the time zone is likely to need to be sent to the server, and you probably
> want to use type=datetime-local with a <select>.
>
>
>> This is actually required for repeating events since it's important to
>> know which timezone the user picked. I.e. there are two values entered
>> by the user: the date/time and the timezone.
>
> Right. The high-profile cases -- calendars and airline booking sites --
> are actually two of the more complicated cases, and neither is likely to
> use type=datetime. Having the more complicated cases use the more
> complicated types is generally a good thing.
>
>
>> So first off I'm not convinced that the common case for date/time entry
>> will include entering a timezone.
>
> I agree, and type=datetime doesn't involve entering a time zone. The case
> where you enter a time zone is generally going to use type=datetime-local.
>
>
>> Second, I'm not convinced that even if the common case includes timezone
>> entry, that this means that the intuitive behavior for a "datetime"
>> input type is to include UI for timezone entry.
>
> Agreed.
>
>
>> Third, I think that even in many cases where timezones are involved,
>> that the better UI is to have timezone entry separate from from the
>> date/time picker.
>
> Agreed.
>
>
>> I'm not advocating that having a timezone aware date/time picker is a
>> bad idea. But I don't think it should be the "default" behavior. It
>> might not even make it into the 80% set of use cases.
>
> I don't think a time-zone-aware picker is the same as a datetime picker
> that shows time-zone UI.
>
>
>> So at least we should make "datetime" refer to a timezone-agnostic
>> picker. And then use "datetime-global" or "datetime-absolute" or some
>> such as a timezone aware picker.
>
> There's two axes of time-zone-*ism: the data entry space, and the value
> space. They are not the same, and I think that confusing them is leading
> to a confusion regarding why the controls are named as they are.
>
>
> On Wed, 16 Jan 2013, Julian Reschke wrote:
>> On 2013-01-08 01:47, Ian Hickson wrote:
>> > > The next best choice would be to have datetime-with-timezone but
>> > > unfortunately
>> > >
>> > > (1) Official database for all timezones does not exist
>> > > (2) Official timezone names (or labels) do not exist
>> > > (3) Timezones are subject to future political decisions
>> > >
>> > > The problems (1) and (2) make transferring the timezone information
>> > > from the end user to the server very problematic and the problem (3)
>> > > makes any work to fix (1) and (2) a bit pointless. This is because
>> > > even if UA could successfully inform the server about the correct
>> > > timezone, the server could be using a week old timezone data that is
>> > > not up to the latest political events. Or the server might be using
>> > > latest timezone data but the UA could be using three year old data.
>> > > In either case, the absolute time in UTC could be different for the
>> > > server and UA.
>> >
>> > Indeed.
>>
>> Sorry?
>>
>> <http://www.iana.org/time-zones> addresses (1) and possibly (2), no?
>
> Yes (and it's already referenced by the spec). I was "indeed"ing the
> problem with servers and clients disagreeing about which version of the
> data to use.
>
>
> On Wed, 30 Jan 2013, Mounir Lamouri wrote:
>>
>> I feel like there is some consensus in the list to move 'datetime' to a
>> TZ-agnostic type.
>
> I don't think this makes sense, as discussed above.
>
>
>> Regarding the TZ-aware type, I believe we could simply drop it from the
>> specifications for the moment. I do not believe it is a good idea to
>> specify something when we have no idea how that could be implemented and
>> when there is no native UI that could be used.
>
> The UI for type=datetime and type=datetime-local can be the same.
>
>
>> The advantage of 'datetime-timezone' compared to 'datetime' + a UI to
>> pick a timezone is low.
>
> The type=datetime control in the spec is not equivalent to a datetime
> picker plus UI for a time zone.
>
>
> On Wed, 30 Jan 2013, Mounir Lamouri wrote:
>>
>> In my war against useless input types, I had a look at 'month' and
>> 'week' and I am wondering what was the rationale behind having them in
>> the HTML specifications.
>>
>> Regarding 'month', I mostly don't understand the use case.
>
> Credit card expiry dates, amongst others.
>
>
>> Given that the element is pretty trivial to implement by authors (this
>> is basically two <select> or a select and a <input type='number'>), the
>> only advantage I see to have this element in the specifications is to
>> have a native UI on mobile.
>
> It also makes autofilling the values significantly easier to manage.
>
>
>> I am wondering if use cases were taken into account when this was added
>> to the specs
>
> Yes, we got rid of a bunch of controls for which use cases couldn't be
> found.
>
>
>> I can see niche use cases for 'week' but I do not think it is easy to
>> come up with a good UI for this, especially on mobile (there is no
>> native UI on mobile AFAIK). On desktop, Chrome's UI is terrible but the
>> Opera one is decent.
>
> Maybe not coincidentally, type=week is more common in Europe, where many
> companies manage data on a weekly basis using ISO weeks, rather than in
> the way US companies manage data, which is mostly using full dates.
>
>
> [snip other people giving other use cases - thanks!]
>
>
> On Wed, 30 Jan 2013, Nicolas Froidure wrote:
>>
>> I will go more far. I'd like to have an <input type="day" />. I often
>> have the need to create forms where the user choose an interval of
>> "days". By example, from 1st March to 30 November. Currently i use
>> <input type="date" /> and i ignore the year.
>
> I think adding this would make sense once we have more experience with the
> current types. (February makes "day" a bit more annoying than I'd like.)
>
>
> On Tue, 12 Feb 2013, Jukka K. Korpela wrote:
>>
>> What are the odds that browser vendors will implement <input type=month>
>> in a simple manner that allows fast typing as one input method? Rather
>> small I think.
>
> File a bug, if they don't. At least you only need to get one
> implementation fixed rather than every site...
>
>
> On Wed, 13 Feb 2013, Glenn Maynard wrote:
>>
>> A trickier issue for weeks is which day the week starts on.  To me,
>> calendar weeks start on Sunday and end on Saturday.  I'd find it weird
>> to be shown a Monday-aligned calendar, but this is hard to localize,
>> since the browser can't return anything but Monday-based week numbers.
>> This would probably work better if the result was a date, not a week
>> number, so it could return both Sundays and Mondays, but this might lead
>> to localization bugs.
>
> The main use case intended for type=week is the use of ISO week dates in
> corporate environments in Europe, which are all going to use Monday-
> aligned weeks. But once we have solid implementations of the existing
> types, we can certainly see what other use cases there are and add support
> for those, as appropriate.
>
> --
> Ian Hickson               U+1047E                )\._.,--....,'``.    fL
> http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
> Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'



More information about the whatwg mailing list