Summary
.net
の時間表記のちょっとしたメモ
こんな感じ
open System
/// このパソコンのタイムゾーンの確認
System.TimeZoneInfo.Local.Id |> printfn "%A" /// "Asia/Tokyo"
/// このパソコンに入ってるタイムゾーンの確認
System.TimeZoneInfo.GetSystemTimeZones()
|> Seq.iter ( fun n -> stdout.WriteLine n )
/// Africa/Abidjan
/// Africa/Accra
/// Africa/Addis_Ababa
/// ....
/// 日付をRFC3339形式にする関数
let toRFC3339 dt =
System.Xml.XmlConvert.ToString( dt, System.Xml.XmlDateTimeSerializationMode.Utc )
/// RFC3339形式を普通の日付形式にする関数
let toDate rfc3339 =
System.DateTime.Parse(rfc3339)
/// (JST)2017年4月9日11時という時刻
let JST = DateTime( 2017,4,9,11,0,0 )
JST |> stdout.WriteLine /// 4/9/2017 11:00:00 AM
JST |> toRFC3339 |> stdout.WriteLine /// 2017-04-09T11:00:00Z
/// Convert UTC ( JST = UTC + 9 )
let UTC = JST |> System.TimeZoneInfo.ConvertTimeToUtc
UTC |> stdout.WriteLine /// 4/9/2017 2:00:00 AM
UTC |> toRFC3339 |> stdout.WriteLine /// 2017-04-09T02:00:00Z
/// Convert EET ( EET = UTC + 3 summer, UTC + 2 winter )
let easternZone = TimeZoneInfo.FindSystemTimeZoneById("Europe/Rome")
let EET = System.TimeZoneInfo.ConvertTime( JST ,easternZone )
EET |> stdout.WriteLine /// 4/9/2017 4:00:00 AM
EET |> toRFC3339 |> stdout.WriteLine /// 2017-04-09T04:00:00Z