57605


Webアプリケーションを作成中で、web側をJavascript、DB側をGoを使って書いています。  
Web側で時間を選択して、それをGoに送るのですが、web側で選ぶ時はローカルタイムなので、仮に日本ならばその時は2019-08-22T18:28:44+09:00となります。これをDB側に送る際に自動的にString型に変換され（送る時は必ずString型になる）、Goでtime.Parseを使い、時間型に変換しなおしています。

[code]

    t, _ := time.Parse("2006-01-02T15:04:05-07:00", "2019-08-22T18:28:44+09:00")
    //2019-08-22 18:28:44 +0900 JST
    
    fmt.Println(t.UTC())
    //2019-08-22 09:28:44 +0000 UTC
    
[/code]

この書き方で一応ローカルタイムをUTC時間に変更できるようですが、この時にサマータイムなどは考慮されて変換されるのでしょうか？１時間の差なので、そこまで気にはしませんが、もしサマータイムなども考慮して変換する方法があれば教えてください。  
UTCへの変換はGoで行なっていますが、JavaScript側でも大丈夫です。UTCに変換したものをString型で送れば良いので。

どうぞよろしくお願いいたします。


CC BY-SA 4.0
2019-08-23T00:37:38.467
57553
2019-08-26T06:12:48.917
35503
question
javascript go
GoかJavascriptでローカルタイムをUTCに変換する時にサマータイムなどを考慮させるには


`2019-08-22T18:28:44+09:00`
という文字列にはタイムゾーンオフセットの情報が入っていますが、タイムゾーンそのもの(JSTやKSTなど)の情報が欠落しています。タイムゾーンの情報がないため夏時間を考慮することはできず、「タイムゾーンオフセットをローカル時間から引けばUTCの時刻になる」という計算だけが可能です。タイムゾーンオフセットを得るときに夏時間を考慮する必要があります。

[`Ext.Date.format()`](https://docs.sencha.com/extjs/6.2.1/modern/Ext.Date.html)
では `Date.prototype.getTimezoneOffset()` が使われているようです。

`getTiemzoneOffset()` は、その`Date`オブジェクトが表すローカル日時に従ったオフセット値を返すようECMA
Scriptの仕様で決められています。夏時間にも対応しています。よって、`Date`オブジェクトにローカルの日付を設定したあとに`getTimezoneOffset()`を呼べば夏時間対応はできていることになります。


CC BY-SA 4.0
2019-08-26T06:12:48.917
57605
2019-08-26T06:12:48.917
3475
57553
answer