1

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

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

function setDateIntoHiddenField(sender, args)

有什么想法或建议吗?

4

3 回答 3

2

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

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

中部时间为 UTC -5

罗马尼亚时间是UTC+2

像这样设置日期选择器值:

DateTime.UtcNow

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

于 2012-10-17T09:50:33.733 回答
1

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

当您设置 SelectedDate 值时,日历扩展器控件将其视为 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选定的日期值并检查印度地区的显示日期。我保证你会感到惊讶。

于 2012-10-17T14:12:52.630 回答
1

您可以尝试以下代码在客户端设置 UTC 日期

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

然后使用dateTime设置文本框上的文本。

于 2012-10-18T09:30:27.313 回答