2

我使用 Telerik raddatepicker 控件来选择日期。

我从控件中获取日期值,将其转换为 javascript Date 对象,然后使用 getTime 获取总毫秒数:

            var FromDate = $find("<%=fromDate.ClientID%>").get_dateInput().get_displayValue();
            var FromDateMill = new Date(FromDate).getTime();

我选择的日期是 2012 年 6 月 4 日(我们)。当我打印 new Date(FromDate) 的结果时,我得到了我选择的正确日期。

在服务器端,我尝试使用从 javascript 获得的毫秒数获取 datetime 对象,因此我使用以下代码:

DateTime seventies = new DateTime(1970, 1, 1);
DateTime fromDate = seventies.AddMilliseconds(Convert.ToDouble(Reader["FromDateMill"]));

但是当我从日期打印时,我得到 6/3/2012 9:00:00 AM(前一天..)。我检查并看到转换 toDouble 返回正确的毫秒数,因为我在 javascript 中得到了。

有谁知道我做错了什么?

谢谢,英巴尔。

4

1 回答 1

2

您从该getTime方法获得的值不是来自本地时间,而是来自世界时间。当您将这些毫秒添加到 1970-1-1 时,您将获得通用时间,而不是本地时间。

使用ToLocal方法获取本地时间的 DateTime 值:

DateTime fromDate =
  seventies.AddMilliseconds(Convert.ToDouble(Reader["FromDateMill"])).ToLocal();
于 2012-09-02T11:20:48.397 回答