$30 off During Our Annual Pro Sale. View Details »

Time

 Time

A talk about how to handle time and timezones. Given at Twente.rb

Dirkjan Bussink

February 10, 2015
Tweet

More Decks by Dirkjan Bussink

Other Decks in Programming

Transcript

  1. Time
    Dirkjan Bussink!
    @dbussink

    View Slide

  2. Time is hard

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. Basics

    View Slide

  9. View Slide

  10. Timezones

    View Slide

  11. http://momentjs.com/

    View Slide

  12. http://momentjs.com/

    View Slide

  13. Storing

    View Slide

  14. UTC

    View Slide

  15. Why?

    View Slide

  16. 2014-10-26 02:34

    View Slide

  17. A bit more!
    complicated

    View Slide

  18. Group!
    by date

    View Slide

  19. View Slide

  20. Who’s date?

    View Slide

  21. http://pellepim.bitbucket.org/jstz/

    View Slide

  22. View Slide

  23. View Slide

  24. Calculations

    View Slide

  25. View Slide

  26. Perspective

    View Slide

  27. View Slide

  28. UTC loses data

    View Slide

  29. UTC + offset

    View Slide

  30. 2014-08-19 16:12:50 +0200

    View Slide

  31. Time as a feature

    View Slide

  32. Calendars

    View Slide

  33. View Slide

  34. View Slide

  35. DST

    View Slide

  36. amsterdam = ActiveSupport::TimeZone["Europe/Amsterdam"]
    time = amsterdam.parse("2014-08-19 17:15")
    => Tue, 19 Aug 2014 17:15:00 CEST +02:00

    View Slide

  37. sydney = ActiveSupport::TimeZone[“Australia/Sydney"]
    !
    time
    => Tue, 19 Aug 2014 17:15:00 CEST +02:00
    time.in_time_zone(sydney)
    => Wed, 20 Aug 2014 01:15:00 EST +10:00

    View Slide

  38. later = time + 6.months
    => Thu, 19 Feb 2015 17:15:00 CET +01:00
    !
    later.in_time_zone(sydney)
    => Fri, 20 Feb 2015 03:15:00 EST +11:00

    View Slide

  39. Our recurring meeting!
    just moved 2 hours!

    View Slide

  40. UTC + offset!
    isn’t good enough

    View Slide

  41. Time & time zone
    Europe/Amsterdam
    Tue, 19 Aug 2014 17:15:00 CEST +02:00

    View Slide

  42. Time tracking

    View Slide

  43. Check in & check out

    View Slide

  44. 125%
    22:00 00:00
    150% Break 150%
    01:00 01:30 06:00

    View Slide

  45. DST

    View Slide

  46. 125% 150% Break 150%
    01:30 02:00 02:59
    02:00
    03:00

    View Slide

  47. 9 hours from 22:00 until 06:00

    View Slide

  48. Very specific!
    storage format

    View Slide

  49. Day!! ! ! ! ! ! ! 2014-10-26!
    Start!! ! ! ! ! ! 79200!! ! !
    End!! ! ! ! ! ! ! 108000!
    Duration!! ! 32400

    View Slide

  50. Take away

    View Slide

  51. Start with UTC

    View Slide

  52. Be careful!
    with timezones

    View Slide

  53. Make conscious!
    decisions

    View Slide