Click here to Skip to main content

DateTime Values according to the remote time zone


In the web applications we are often displaying date/time values. But how can we display value according to the user’s time zone?

We can do this by using following steps:

  • Get difference in hours between user’s local time and GMT using Java Script
  • Pass this value from client to the server
  • Attach this value to the remote user object on the server (for example attach it to the Profile object)
  • Detect actual time zone based on  difference between user’s local time and GMT.
  • Calculate time according to the time zone and display time and time zone

Code samples


Configuring storage of difference between local time and GMT is very simple in 2.0

<profile enabled="true" >
defaultValue="0" type="double"/>


Here is simple Javascript to get time difference on the browser.

<head runat="server">
<script type="text/javascript">
var rightNow = 
new Date();
var date1 = 
Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);

var temp = 
var date2 = 
new Date(temp.substring(0, 
temp.lastIndexOf(" ")-1));

var hoursDiffStdTime = 
(date1 - date2) / (1000 * 60 * 60);

createCookie("hoursDiffStdTime", hoursDiffStdTime, 0); 

createCookie(name,value,days) {
if (days && 
days > 0) {
var date = new Date();
var expires = 
"; expires="+date.toGMTString();
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
<body onload="GetLocalTimeOffset();">


Here is how we getting time difference on the server from the client, attaching it to the profile and passing it to calculate display values

Profile.hoursDiffStdTime = Double.Parse(Request.Cookies["hoursDiffStdTime"].Value ); 
Label1.Text = TimeZoneManager.DisplayDateTime(DateTime.Now, Profile);


Xml doc which holds time zones is located in app_data and looks like this:

version="1.0" encoding="utf-8" ?>
<option value="-12.00" 
>Eniwetok, Kwajalein</option>
<option value="-11.00" 
>Midway Island, Samoa</option>
<option value="-10.00" 
<option value="-9.00" >Alaska</option>
<option value="-8.00" >Pacific Time 
(US &amp; 
<option value="-7.00" >Mountain Time 
(US &amp; 
<option value="-6.00" >Central Time 
(US &amp; Canada), 
Mexico City</option>
<option value="-5.00" >Eastern Time 
(US &amp; Canada), 
Bogota, Lima, Quito</option>
<option value="-4.00" >Atlantic Time 
(Canada), Caracas, La Paz</option>
<option value="-3.50" >Newfoundland</option>
<option value="-3.00" >Brazil, 
Buenos Aires, Georgetown</option>
<option value="-2.00" >Mid-Atlantic</option>
<option value="-1.00" >Azores, Cape 
Verde Islands</option>
<option value="0.00" >Western 
Europe Time, London, Lisbon, Casablanca, Monrovia</option>
<option value="1.00" >CET(Central 
Europe Time), Brussels, Copenhagen, Madrid, Paris</option>
<option value="2.00" >EET(Eastern 
Europe Time), Kaliningrad, South Africa</option>
<option value="3.00" >Baghdad, 
Kuwait, Riyadh, Moscow, St. Petersburg, Volgograd, Nairobi</option>
<option value="3.50" >Tehran</option>
<option value="4.00" >Abu Dhabi, 
Muscat, Baku, Tbilisi</option>
<option value="4.50" >Kabul</option>
<option value="5.00" >Ekaterinburg, 
Islamabad, Karachi, Tashkent</option>
<option value="5.50" >Bombay, 
Calcutta, Madras, New Delhi</option>
<option value="6.00" >Almaty, 
Dhaka, Colombo</option>
<option value="7.00" >Bangkok, 
Hanoi, Jakarta</option>
<option value="8.00" >Beijing, 
Perth, Singapore, Hong Kong, Chongqing, Urumqi, Taipei</option>
<option value="9.00" >Tokyo, Seoul, 
Osaka, Sapporo, Yakutsk</option>
<option value="9.50" >Adelaide, 
<option value="10.00" >EAST(East 
Australian Standard), Guam, Papua New Guinea, Vladivostok</option>
<option value="11.00" >Magadan, 
Solomon Islands, New Caledonia</option>
<option value="12.00" >Auckland, 
Wellington, Fiji, Kamchatka, Marshall Island</option>
<option value="13.00" >Nuku&quot;alofa</option>

We are using XPathDocument class here. XPathDocument works fasrer than XmlDocument so we are using it to get time zone name based on the time difference.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Runtime.Remoting.Messaging;
using System.Xml.XPath;
using System.Xml;
/// <summary>
/// Summary description for 
/// </summary>
public class TimeZoneManager
/// Gets 
the time zone.

Web01 | 2.8.160204.4 | Advertise | Privacy
Copyright © CodeProject, 1999-2016
All Rights Reserved. Terms of Service