Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JS Fest 2019. Дмитрий Коваленко. Временной коллапс в JS

31 views

Published on

Каждому разработчику рано или поздно приходится столкнуться с такой штукой как дата и время. И обычно это оборачивается занозой в одном месте :). Поэтому в этом докладе мы поговорим о том, почему дата и время приносят столько проблем программистам и как обойти эти проблемы стороной. Дата и время - это просто :)

Published in: Education
  • Be the first to comment

  • Be the first to like this

JS Fest 2019. Дмитрий Коваленко. Временной коллапс в JS

  1. 1. Временной КОллапс
  2. 2. Checkout online
  3. 3. Dmitriy Kovalenko @dmtrKovalenko
  4. 4. Timezones
  5. 5. DateTime problems?
  6. 6. DateTime problems?
  7. 7. DateTime problems? Often ignored
  8. 8. DateTime problems? Costs 💰💰💰💰
  9. 9. The Reason Of time problems
  10. 10. What is time?
  11. 11. What is time?
  12. 12. 9 192 631 770 периодов излучения, соответствующего переходу между двумя сверхтонкими уровнями основного состояния атома цезия-133.
  13. 13. Humanity The root of evil February Leap year Leap second Timezones Daylight Saving Time Local time Periods Calendar system
  14. 14. Timezones
  15. 15. Timezone Offset
  16. 16. Timezones
  17. 17. Timezones — the local time of a region or a country + DST.
  18. 18. Australia
  19. 19. Australia
  20. 20. Australia DST
  21. 21. Samoa Islands Back to the future
  22. 22. +14:00
  23. 23. tzdata saves the world
  24. 24. tzdata
  25. 25. TZDATA commit MOMENT Commit UPDATE PACKAGES
  26. 26. One more thing…
  27. 27. One more thing…
  28. 28. 2018i
  29. 29. Just not updated……
  30. 30. Just not updated……
  31. 31. Native timezones -> Intl
  32. 32. Collapse EEST PO ST { tim ezone: EEST } Backend id Time 124 2019-03-02T10:56:07.582Z
  33. 33. G ET { tim ezone: UTC } EEST Backend id Time 124 2019-03-02T10:56:07.582Z Collapse
  34. 34. Always work with timezones in one place
  35. 35. SET TIMEZONE TO 'America/New_York'; SELECT * FROM my-supertable WHERE timecol > NOW() - interval '1 week'; Database
  36. 36. Where to store user TZ?
  37. 37. If you doubt — in database
  38. 38. Parsing x x
  39. 39. "2019-02-01T16:10:34.537Z" "2019-02-01_10:34" 124125485 User time
  40. 40. 🤔 Which timezone?
  41. 41. User time Tuesday 15th, 12:45 EEST
  42. 42. 1. Store your dates in UTC 3. Use ISO-string with timezone included 4. Store it in database if you need TZ Golden rules 5. Define timezone is expected for your users 2. Work with timezones in one place
  43. 43. UI
  44. 44. Render DST 00 01 02 03 00 DST Hours Status
  45. 45. Not easy 01 02 02 03 00DST Hours Status
  46. 46. No ready solutions :(
  47. 47. Different calendar systems
  48. 48. No-Dependencies
  49. 49. No-Dependencies KILLS TIMEZONE MANAGMENT
  50. 50. Dependencies?
  51. 51. Dependencies?
  52. 52. Size Whole 0 30 60 90 120 Only formatting 0 5 10 15 20 Moment-timezone kb/gzip kb/gzip Luxon Moment Date-fns Day-js
  53. 53. Performance Calculations 0 22500 45000 67500 90000 Formatting 0 45000 90000 135000 180000 https://github.com/dmtrKovalenko/date-io/tree/master/packages/benchmark Luxon Moment Date-fns Day-js ops/sec ops/sec
  54. 54. Everything is not so bad
  55. 55. Next time you will work with date/time take a few hours to grok it
  56. 56. Links • https://www.iana.org/ • https://www.timeanddate.com/ • https://github.com/dmtrKovalenko/date-io • https://www.npmtrends.com/moment-vs-date-fns-vs-luxon-vs-dayjs
  57. 57. Thank you for your attention

×