WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

クライアント側の現地時刻取得

by WebSurfer 2010年10月6日 22:16

クライアントの現地時刻をサーバーで取得する方法です。

クライアントの現地時刻をサーバーで取得

例えば、クライアントが何かの帳票を要求した際、クライアントの現地時刻を帳票のフッターに書き込むような場合を考えます。

クライアントが日本国外(時差がある場所)にもいるような場合が問題です。サーバー側で持っている日時をクライアント側の現地時間に変換するのはかなり難しそうですので。

その代わりに、帳票の出力要求のタイミングで 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();
      document.getElementById("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>

------------ 2010/4/24 追記 ------------

この記事で紹介したコードを実際に動かして試せるよう 実験室 にアップしました。興味のある方は試してみてください。

Tags:

JavaScript

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar