我使用 telerik raddatepicker 控件来选择日期。
我从控件中获取日期值,将其转换为 javascript Date 对象,然后使用 getTime 获取总毫秒数:
var FromDate = $find("<%=fromDate.ClientID%>").get_dateInput().get_displayValue();
var FromDateMill = new Date(FromDate).getTime();
我选择的日期是 6/4/2012(美国)。 当我打印 new Date(FromDate) 的结果时,我得到了我选择的正确日期。
在服务器端,我尝试使用从 javascript 获得的毫秒数来获取日期时间对象,因此我使用以下代码:
DateTime seventies = new DateTime(1970, 1, 1);
DateTime fromDate = seventies.AddMilliseconds(Convert.ToDouble(Reader["FromDateMill"]));
但是当我打印 fromDate 时,我得到 6/3/2012 9:00:00 AM(前一天..)。 我检查了一下,发现 toDouble 转换返回了正确的毫秒数,正如我在 javascript 中得到的那样。
有人知道我做错了什么吗?
谢谢, 因巴尔。
最佳答案
从 getTime
方法获取的值不是来自本地时间,而是来自世界时间。当您将这些毫秒添加到 1970-1-1 时,您将得到世界时间,而不是本地时间。
使用ToLocal
方法获取本地时间的DateTime值:
DateTime fromDate =
seventies.AddMilliseconds(Convert.ToDouble(Reader["FromDateMill"])).ToLocal();
关于c# - 将 javascript gettime() 转换为 c# 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12235451/