关于c#:Ajax控件工具包时区问题

Ajax Control Tool Kit Time Zone issue

我在Web应用程序中使用Ajax Control Kit。 问题是当我使用印度时区访问应用程序然后它工作正常但是当我选择中央时间(美国和加拿大)的时区时,日历将显示日期显示为选定日期-1。 例如,如果我选择16.Oct.2012,它将显示(在extendar控制中)为15.Oct.2012。 我尝试了以下代码,但没有帮助:

1
2
3
4
5
6
7
protected void Page_Load(object sender, EventArgs e) {
    string Lang ="en-US"; //set your culture here
    System.Threading.Thread.CurrentThread.CurrentCulture =
        new System.Globalization.CultureInfo(Lang);
}

EnableScriptGlobalization ="true";

另外在调试期间,我发现Javascript函数本身的发送者存储了错误的值,即日期=选择日期-1

1
function setDateIntoHiddenField(sender, args)

任何想法或建议?


你为什么要尝试罗马尼亚文化?
尝试美国文化,如:

1
2
3
string Lang ="en-US"; //set your culture here
System.Threading.Thread.CurrentThread.CurrentCulture =
new System.Globalization.CultureInfo(Lang);

中部时间是UTC -5

罗马尼亚时间是UTC + 2

像这样设置datepicker值:

1
DateTime.UtcNow

您可以在此处找到有关使用时区的更深入的说明:
如何优雅地处理时区


您可以尝试使用以下代码在客户端获得UTC日期

1
2
 var localDate = sender.get_selectedDate();
    var dateTime = new Date(localDate.getUTCFullYear(), localDate.getUTCMonth(), localDate.getUTCDate()).format("MMM dd, yyyy");

然后使用dateTime在文本框中设置文本。


你已经得到了一个很好的建议,你应该使用UTC日期值而不是本地值。

当你设置SelectedDate值时,它被Calendar扩展器控件视为UTC日期,所以如果设置16.Oct.2012选择的日期值,则意味着你设置了Tue, 16 Oct 2012 00:00:00 GMT,当这个值转换为本地中心时间时,它仍然是10月15日中央时区。严格说它是10/15/2012 7:00:00 PM

顺便说一下,您可以尝试设置16.Oct.2012 23:00选定的日期值并检查印度地区的显示日期。我保证你会感到惊讶。