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 追記 ------------
この記事で紹介したコードを実際に動かして試せるよう 実験室 にアップしました。興味のある方は試してみてください。
030da417-25c3-481f-9d01-83f9b50bc0b8|3|4.3
Tags:
JavaScript