none
ログインした地域ごとの現地時間の取得方法 RRS feed

  • 質問

  • WindowsServer2003を使っています。
    帳票が出力された時間を日本時間でサーバ上に持っているのですが、
    それを、現地時間に変換したいです。
    例えば、ニューヨークの人がログインした時、
    .NETの関数か何かで、変換したい時刻と、地名を引数として、
    その地の時間(サマータイムも加味)が持ってこれるというのがあれば、
    実現できると思うのですが、そんな関数あるのでしょうか・・・。
    2009年7月24日 1:19

回答


  • こんなWEBAPIはいかがですか。(使ってみた事は無いのですが、面白そうです)

    Time Zone and Local Time
    http://www.earthtools.org/webservices.htm#timezone

    日本語で、使用方法の案内をしているページ
    http://markun.cs.shinshu-u.ac.jp/learn/WebAPI/api6/time.html

    chonmage
    2009年7月24日 5:08
  • 私なら、という回答ですが、
    ASP.NET側からブラウザに対してはUTC値を送りJavaScript側で、Date.toLocaleString を使用して文字列化します。

    質問に対する直接的な回答としては、Date.getTimezoneOffset を使用してブラウザからASP.NETへ事前に時差情報を送り込み、それを使用すればできそうかなと。
    2009年7月24日 11:23
  • > 帳票が出力された時間を日本時間でサーバ上に持っているのですが、
    > それを、現地時間に変換したいです。

    サーバーに持っている日本時間をクライアントの現地時間に変換するのはちょっと難しそうです。

    その代わりに、帳票の出力要求のタイミングで JavaScript を使ってクライアントの PC から日時を
    取得してサーバーに POST し、それをサーバーで処理することなら簡単にできそうです。

    例えば下記のような感じですが、いかがですか?

    <%@ Page Language="C#" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack)
            {
                Label1.Text = HiddenField1.Value;
            }
        }
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
        <!--
            function SetLocalDateTimeNow() {
                var now = new Date();
                form1.HiddenField1.value = now.getFullYear() + "年" +
                    (now.getMonth() + 1) + "月" + now.getDate() + "日" +
                    now.getHours() + "時" + now.getMinutes() + "分" + now.getSeconds() + "秒";
            }
        //-->
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="帳票に出力" OnClientClick="SetLocalDateTimeNow();" />
            <br />
            <asp:Label ID="Label1" runat="server"></asp:Label>
            <input type="hidden" name="HiddenField1" id="HiddenField1" value="" runat="server" />
        </div>
        </form>
    </body>
    </html>

    2009年7月24日 14:36

すべての返信


  • こんなWEBAPIはいかがですか。(使ってみた事は無いのですが、面白そうです)

    Time Zone and Local Time
    http://www.earthtools.org/webservices.htm#timezone

    日本語で、使用方法の案内をしているページ
    http://markun.cs.shinshu-u.ac.jp/learn/WebAPI/api6/time.html

    chonmage
    2009年7月24日 5:08
  • 私なら、という回答ですが、
    ASP.NET側からブラウザに対してはUTC値を送りJavaScript側で、Date.toLocaleString を使用して文字列化します。

    質問に対する直接的な回答としては、Date.getTimezoneOffset を使用してブラウザからASP.NETへ事前に時差情報を送り込み、それを使用すればできそうかなと。
    2009年7月24日 11:23
  • > 帳票が出力された時間を日本時間でサーバ上に持っているのですが、
    > それを、現地時間に変換したいです。

    サーバーに持っている日本時間をクライアントの現地時間に変換するのはちょっと難しそうです。

    その代わりに、帳票の出力要求のタイミングで JavaScript を使ってクライアントの PC から日時を
    取得してサーバーに POST し、それをサーバーで処理することなら簡単にできそうです。

    例えば下記のような感じですが、いかがですか?

    <%@ Page Language="C#" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack)
            {
                Label1.Text = HiddenField1.Value;
            }
        }
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
        <!--
            function SetLocalDateTimeNow() {
                var now = new Date();
                form1.HiddenField1.value = now.getFullYear() + "年" +
                    (now.getMonth() + 1) + "月" + now.getDate() + "日" +
                    now.getHours() + "時" + now.getMinutes() + "分" + now.getSeconds() + "秒";
            }
        //-->
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="帳票に出力" OnClientClick="SetLocalDateTimeNow();" />
            <br />
            <asp:Label ID="Label1" runat="server"></asp:Label>
            <input type="hidden" name="HiddenField1" id="HiddenField1" value="" runat="server" />
        </div>
        </form>
    </body>
    </html>

    2009年7月24日 14:36
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    chonmageさん、佐祐理さん、SurferOnWwwさん
    こんにちは、ご投稿有難うございました。

    buruburukoinuさん、初めまして。
    MSDNフォーラムのご利用ありがとうございます。

    皆さんから色々なアドバイスを頂いたと思うのですが、試して頂けましたでしょうか?
    chonmageさん、佐祐理さん、SurferOnWwwさんから頂いた情報が、有用な情報だと思いましたので、
    勝手ながら、回答マークを付けさせてもらいました。
    問題が解決していない場合、もしくは不適切と思いましたら、回答マークを削除することも可能です。

    今後ともMSDNフォーラムをよろしくお願いします(^-^)


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年8月3日 8:43