Skip to content

versions/2.0: Add a 'time' type #355

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed

Conversation

wking
Copy link

@wking wking commented May 6, 2015

Having human-readable times that are not associated with dates is
frequently useful. For example, this lets you say things like:

  • "tea is at 3:15pm" (localtime)
  • "the weekly meeting is at 12:00 UTC"

Using the ISO 8061 time formats should make it easy for both
people and software to interact with the values.

Since Swagger-specified APIs are often consumed and produced from
JavaScript, and since JavaScript has limited time-handling
capabilities, I thought I'd dig a bit deeper in that direction.
Support for date-less ISO 8601 times in native JavaScript is unclear,
but Firefox 31.5 in seems to support times with a 'T' prefix:

new Date('12:34')
Invalid Date
new Date('T12:34')
Date 1970-01-01T20:34:00.000Z
new Date('T12:34Z')
Date 1970-01-01T12:34:00.000Z

which, in conjunction with Date.prototype.toTimeString() and other
time-specific maniplations is probably sufficient for most purposes.
Chromium 41.0, on the other hand, gave 'Invalid Date' warnings for
each of those cases, so JavaScript consumers may want to pad their
times with dummy date information. Moment.js also requires a date
part and doesn't support stand-alone times.

On the other hand, there are time-only pickers in JavaScript.

Python also has a time-only format as does Java. Go just
has a date-time type, but it can parse time-only strings.

@wking wking force-pushed the time-format branch 3 times, most recently from 44c1370 to c3119d8 Compare May 6, 2015 23:58
Having human-readable times that are not associated with dates is
frequently useful.  For example, this lets you say things like:

* "tea is at 3:15pm" (localtime)
* "the weekly meeting is at 12:00 UTC"

Using the ISO 8061 time formats [1,2] should make it easy for both
people and software to interact with the values.

Since Swagger-specified APIs are often consumed and produced from
JavaScript, and since JavaScript has limited time-handling
capabilities, I thought I'd dig a bit deeper in that direction.
Support for date-less ISO 8601 times in native JavaScript is unclear
[3], but Firefox 31.5 in seems to support times with a 'T' prefix:

  > new Date('12:34')
  Invalid Date
  > new Date('T12:34')
  Date 1970-01-01T20:34:00.000Z
  > new Date('T12:34Z')
  Date 1970-01-01T12:34:00.000Z

which, in conjunction with Date.prototype.toTimeString() [4] and other
time-specific maniplations is probably sufficient for most purposes.
Chromium 41.0, on the other hand, gave 'Invalid Date' warnings for
each of those cases, so JavaScript consumers may want to pad their
times with dummy date information.  Moment.js also requires a date
part and doesn't support stand-alone times [5].

On the other hand, there are time-only pickers in JavaScript [6].

Python also has a time-only format [7] as does Java [8,9].  Go just
has a date-time type, but it can parse time-only strings [10].

[1]: http://en.wikipedia.org/wiki/ISO_8601#Times
[2]: http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14
[3]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#Parameters
[4]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeString
[5]: http://momentjs.com/docs/#supported-iso-8601-strings
[6]: https://angular-ui.github.io/bootstrap/#/timepicker
[7]: https://docs.python.org/3/library/datetime.html#time-objects
[8]: https://docs.oracle.com/javase/8/docs/api/java/time/OffsetTime.html
[9]: https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html
[10]: http://golang.org/pkg/time/#Parse
@webron
Copy link
Member

webron commented May 7, 2015

Same comment applies as the previous PR... sorry.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants