2011-08-31 194 views
0

這我我從asp.net 2.0 Web窗體保存記錄的信息碼asp.net時間戳問題

  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)主辦奈,加爾各答,孟買,新德里, 現在來自其他系統的用戶訪問時區爲(UTC + 01:00)西非中部的應用程序, 正如您所看到的,我已經將'datetime現在作爲Utcnow'插入,但是當用戶查看插入的記錄它必須在其當地日期時間格式

即 dateinfo.Text =「TimeStamp Info:」+ now; //這個標籤應顯示本地時間信息目前它顯示了應用程序託管

Thanxs任何幫助

回答

0

使用JavaScript來獲取當前的時間在客戶端系統也放到了一個javascript變量服務器本地時間。 如何做到這一點可以在這裏找到:
http://www.quackit.com/javascript/javascript_date_and_time_functions.cfm

然後將javascript變量值分配給一個隱藏的字段變量,並訪問它在服務器端。 如何在後面的代碼中訪問javascript變量
http://codeasp.net/blogs/joydeep157/microsoft-net/81/accessing-javascript-variable-from-code-behind-and-accessing-code-behind-variable-from-javascript

現在,您的服務器變量中有客戶端時間。

+0

謝謝你們的答案 – user919573

1

當從數據庫加載日期時間(你說你存儲UTC那裏),你需要specifiy的這個時候明確地將Kind

DateTime dateTimeFromDatabase = LoadDateTimeValueFromDatabase(); 
DateTime utcDate = DateTime.SpecifyKind(dateTimeFromDatabase, DateTimeKind.Utc); 

然後,只要你有網絡文化網站訪問者設置正確,你可以簡單地使用.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> 
+0

非常感謝您的回答 – user919573

+0

當它的工作它會是不錯的標記爲接受太:) :) –

+0

我已經做到了這一點,但沒有工作仍服務器本地時間DateTime now = DateTime.UtcNow; DateTime localTimeToDisplay = now.ToLocalTime(); lbldateinfo.Text =「時間戳信息:」+ localTimeToDisplay;請幫助 – user919573