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.
うるう秒とタイムゾーン
Xamarin 本社に Mono 申したい会 兼 Xamarin 新年会
2015/01/15
青柳臣一 @ShinichiAoyagi
自己紹介
 青柳臣一
 @ShinichiAoyagi
 職業: ソフトウエア開発(大阪 淀屋橋)
 Xamarin + ASP.NET MVC(C# mono) + WPF(C#)
 WPF(C#)、Windows Froms(VB...
うるう秒
 2015/7/1 の 9時(日本時間)にうるう秒実施
 08:59:59 → 08:59:60 → 09:00:00
 前回は 2012/7/1
 今までに 25回
 いずれも 1秒増
 Linux や MySQL が ...
うるう秒のサポート状況
 Linux ではタイムゾーンを right/Japan とかにする
 ほとんどのサーバーは UTC か Japan、Asia/Tokyo でしょ
 SQL Server、Oracle、MySQL
 ‘2015/...
うるう秒のサポート状況(プログラミング言語)
 Ruby
 うるう秒をサポートするタイムゾーンを指定していれば ‘2015/07/01
08:59:60’ を扱えるらしい
 Mono、.NET Framework
public DateT...
サマータイム
 きちんとサポートするのは大変
 アメリカ、カナダは州・自治体ごとにサマータイムを決めている
 PST とかじゃ指定できない
 結構変更される
 例: アメリカのサマータイム開始日
 1967~1973 は 4月の最終...
tz database
 世界中のタイムゾーンのデータベース
 サマータイム、うるう秒
 地域も細かく指定
 Asia/Tokyo、America/Indiana/Indianapolis など
 今は IANA が管理してるらしい
...
.NET Framework でのタイムゾーン
 TimeZoneInfo クラス
 過去のサマータイムの情報も持ってる
 けど、あきらかに少ない
 そもそも地域の指定が PST とか
iOS、Android でのタイムゾーン
 iOS
 NSTimeZone* tz = [NSTimeZone timeZoneWithName:@"Asia/Tokyo"];
 この形式で指定するってことは tz database?
...
Xamarin でのタイムゾーン
 Mono の TimeZoneInfo?
 ソース見たら #if MONOTOUCH とかあるけど、、、
 どうなんだろう?
Upcoming SlideShare
Loading in …5
×

うるう秒とタイムゾーン

1,580 views

Published on

2015/01/15 開催の「Xamarin 本社に Mono 申したい会 兼 Xamarin 新年会」の際のセッション資料です。

Published in: Technology
  • Be the first to comment

うるう秒とタイムゾーン

  1. 1. うるう秒とタイムゾーン Xamarin 本社に Mono 申したい会 兼 Xamarin 新年会 2015/01/15 青柳臣一 @ShinichiAoyagi
  2. 2. 自己紹介  青柳臣一  @ShinichiAoyagi  職業: ソフトウエア開発(大阪 淀屋橋)  Xamarin + ASP.NET MVC(C# mono) + WPF(C#)  WPF(C#)、Windows Froms(VB)  iOS(Objective-C)、Android(Java)  Spring MVC(Java)
  3. 3. うるう秒  2015/7/1 の 9時(日本時間)にうるう秒実施  08:59:59 → 08:59:60 → 09:00:00  前回は 2012/7/1  今までに 25回  いずれも 1秒増  Linux や MySQL が CPU 100% 張り付きになる現象発生
  4. 4. うるう秒のサポート状況  Linux ではタイムゾーンを right/Japan とかにする  ほとんどのサーバーは UTC か Japan、Asia/Tokyo でしょ  SQL Server、Oracle、MySQL  ‘2015/07/01 08:59:60’ は格納でき無さそう  パースもでき無さそう  いずれも未確認
  5. 5. うるう秒のサポート状況(プログラミング言語)  Ruby  うるう秒をサポートするタイムゾーンを指定していれば ‘2015/07/01 08:59:60’ を扱えるらしい  Mono、.NET Framework public DateTime (int year, int month, int day, int hour, int minute, int second, int millisecond) { if (year < 1 || year > 9999 || month < 1 || month >12 || day < 1 || day > DaysInMonth(year, month) || hour < 0 || hour > 23 || minute < 0 || minute > 59 || second < 0 || second > 59 || millisecond < 0 || millisecond > 999) throw new ArgumentOutOfRangeException ("Parameters describe an " + "unrepresentable DateTime.");
  6. 6. サマータイム  きちんとサポートするのは大変  アメリカ、カナダは州・自治体ごとにサマータイムを決めている  PST とかじゃ指定できない  結構変更される  例: アメリカのサマータイム開始日  1967~1973 は 4月の最終日曜日  1974 は 1/6  1975 は 2/23  1976~1986 は 4月の最終日曜日  1987~ は 4月の第一日曜日
  7. 7. tz database  世界中のタイムゾーンのデータベース  サマータイム、うるう秒  地域も細かく指定  Asia/Tokyo、America/Indiana/Indianapolis など  今は IANA が管理してるらしい  結構頻繁に更新。去年は a~j  Linux では普通に採用されてるっぽい  Asia/Tokyo とかの指定方法は tz database のもの
  8. 8. .NET Framework でのタイムゾーン  TimeZoneInfo クラス  過去のサマータイムの情報も持ってる  けど、あきらかに少ない  そもそも地域の指定が PST とか
  9. 9. iOS、Android でのタイムゾーン  iOS  NSTimeZone* tz = [NSTimeZone timeZoneWithName:@"Asia/Tokyo"];  この形式で指定するってことは tz database?  過去のサマータイムも持ってるのかな?  Android  TimeZone クラス  これも “Asia/Tokyo” 形式。ってことは tz database?  過去のサマータイムも持ってるのかな?
  10. 10. Xamarin でのタイムゾーン  Mono の TimeZoneInfo?  ソース見たら #if MONOTOUCH とかあるけど、、、  どうなんだろう?

×