WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

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

by WebSurfer 6. October 2010 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月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

Calendar

<<  June 2021  >>
MoTuWeThFrSaSu
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar