Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Time
Search
Dirkjan Bussink
February 10, 2015
Programming
0
100
Time
A talk about how to handle time and timezones. Given at Twente.rb
Dirkjan Bussink
February 10, 2015
Tweet
Share
More Decks by Dirkjan Bussink
See All by Dirkjan Bussink
Managing a widely distributed team
dbussink
1
170
The tricky truth about parallel execution and modern hardware
dbussink
0
340
The future of Ruby is faster
dbussink
3
540
Security for dummies
dbussink
1
150
The myth of dynamic language performance
dbussink
3
440
Rubinius - Tales from the trenches @ Railsclub.ru 2012
dbussink
2
210
Rubinius - Tales from the trenches @ Baruco 2012
dbussink
1
260
Rubinius Eurucamp 2012 Workshop
dbussink
2
110
Rubinius Euruko 2012 Lightning talk
dbussink
2
240
Other Decks in Programming
See All in Programming
SpringBootにおけるオブザーバビリティのなにか
irof
1
880
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
260
Building an Application with TDD, DDD and Hexagonal Architecture - Isn't it a bit too much?
mufrid
0
370
Interface vs Types ~型推論が過多推論~
hirokiomote
1
230
❄️ tmux-nixの実装を通して学ぶNixOSモジュール
momeemt
1
120
コンポーネントライブラリで実現する、アクセシビリティの正しい実装パターン
schktjm
1
630
ユーザーにサブドメインの ECサイトを提供したい (あるいは) 2026年函館で一番熱くなるかもしれない言語の話
uvb_76
0
170
TypeScript エンジニアが Android 開発の世界に飛び込んだ話
yuisakamoto
6
930
マテリアルって何者?RealityKitで扱うマテリアル入門
nao_randd
0
140
Use Perl as Better Shell Script
karupanerura
0
630
List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate'"
philipschwarz
PRO
0
120
Investigating Multithreaded PostgreSQL
macdice
0
150
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Done Done
chrislema
184
16k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
620
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
4 Signs Your Business is Dying
shpigford
183
22k
Embracing the Ebb and Flow
colly
85
4.7k
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
Bash Introduction
62gerente
614
210k
Transcript
Time Dirkjan Bussink! @dbussink
Time is hard
None
None
None
None
None
Basics
None
Timezones
http://momentjs.com/
http://momentjs.com/
Storing
UTC
Why?
2014-10-26 02:34
A bit more! complicated
Group! by date
None
Who’s date?
http://pellepim.bitbucket.org/jstz/
None
None
Calculations
None
Perspective
None
UTC loses data
UTC + offset
2014-08-19 16:12:50 +0200
Time as a feature
Calendars
None
None
DST
amsterdam = ActiveSupport::TimeZone["Europe/Amsterdam"] time = amsterdam.parse("2014-08-19 17:15") => Tue, 19
Aug 2014 17:15:00 CEST +02:00
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
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
Our recurring meeting! just moved 2 hours!
UTC + offset! isn’t good enough
Time & time zone Europe/Amsterdam Tue, 19 Aug 2014 17:15:00
CEST +02:00
Time tracking
Check in & check out
125% 22:00 00:00 150% Break 150% 01:00 01:30 06:00
DST
125% 150% Break 150% 01:30 02:00 02:59 02:00 03:00
9 hours from 22:00 until 06:00
Very specific! storage format
Day!! ! ! ! ! ! ! 2014-10-26! Start!! !
! ! ! ! 79200!! ! ! End!! ! ! ! ! ! ! 108000! Duration!! ! 32400
Take away
Start with UTC
Be careful! with timezones
Make conscious! decisions