这是我用来存储来自asp.net 2.0 webform的记录信息的代码
scmd.Connection = scon; //Connection string
SqlParameter p = scmd.CreateParameter();
recodName = txtrecordname.Text; //form field
todaysdate = DateTime.Parse(txtFrom.Text);
DateTime now = DateTime.UtcNow;
AddParameters("@record", recodName); //adding parameter to stored procedure
AddParameters("@date", todaysdate);
AddParameters("@timeinfo", now);
scmd.CommandText = "sp_InsertRecord";
scmd.CommandType = CommandType.StoredProcedure;
scon.Open();
int i=scmd.ExecuteNonQuery();
if (i > 0)
{
result.Text = "Record Inserted RecordName : " + recodName; //Label displaying recordinfo
dateinfo.Text = "Record inserted on (TimeStamp Info) : " + now; //label displaying time info when user inserted record
}
GridView1.DataBind();
此Web应用程序托管在服务器上,时区为(UTC + 05:30)Chennai,Kolkata,Mumbai,New Delhi, 现在来自另一个系统的用户访问其时区为(UTC + 01:00)中非西部的应用程序, 如您所见,我已将'datetime现在作为Utcnow'插入,但当用户查看插入的记录时,它必须在其本地datetimeformat中
即 dateinfo.Text =“TimeStamp Info:”+ now; //此标签应显示本地时间信息,当前显示托管应用程序的服务器本地时间
Thanxs提供任何帮助
答案 0 :(得分:1)
从数据库加载DateTime时(你说你在那里存储了UTC),你需要明确指定这个时间的Kind
:
DateTime dateTimeFromDatabase = LoadDateTimeValueFromDatabase();
DateTime utcDate = DateTime.SpecifyKind(dateTimeFromDatabase, DateTimeKind.Utc);
然后,只要您正确设置了网站访问者的文化,您就可以使用DateTime中的.ToLocalTime()将Utc值显示为本地时间:
DateTime localTimeToDisplay = utcDate.ToLocalTime();
然后使用localTimeToDisplay
变量进行数据绑定,您就已经完成了设置。
更新:要显示当前时间,您只需执行以下操作:
dateinfo.Text = "TimeStamp Info : " + DateTime.UtcNow.ToLocalTime();
由于UtcNow已将日期时间类型设置为UTC。
但是,您需要为客户端设置正确的文化。所以你需要手动或者在web.config中设置它:
<system.web>
<globalization culture="auto" />
<system.web>
答案 1 :(得分:0)
使用javascript获取客户端系统中的当前时间并将其放入javascript变量中。
如何做到这一点可以在这里找到:
http://www.quackit.com/javascript/javascript_date_and_time_functions.cfm
然后将javascript变量值分配给隐藏字段变量并在服务器端访问它。 如何在http://codeasp.net/blogs/joydeep157/microsoft-net/81/accessing-javascript-variable-from-code-behind-and-accessing-code-behind-variable-from-javascript
后面的代码中访问javascript变量现在,您的服务器变量中有客户端时间。