我正在研究ASP.Net上的考勤系统,整个星期的日期由我的程序根据当前日期计算。我正在使用DateTime.Today。我很担心使用它,因为我觉得用户只需更改系统时钟并标记前一周的出勤率就可以修改此日期。
可以通过更改客户端的系统时钟来更改DateTime.Today吗?如果是的话,我还能用其他东西代替吗?
答案 0 :(得分:6)
DateTime.Today
将返回运行它的计算机上的值。
在ASP.NET页面中,这将是服务器。
客户端浏览器无法修改此值。
如果您在基于客户端的技术(例如silverlight)中使用该类,或使用自定义客户端应用程序并直接在其中使用DateTime.Today
,那么是,将使用客户端日期/时间,并且可能是由客户改变。
答案 1 :(得分:5)
DateTime.Now将始终提供服务器上使用的时间,而不是客户端计算机上使用的时间。
您也可以使用DateTime.UtcNow
答案 2 :(得分:2)
在ASP.NET应用程序中,DateTime.Today应该是服务器上的日期/时间,不能由最终用户调整,所以你应该没问题。
答案 3 :(得分:2)
您应该在服务器上使用UTC格式的所有时间。使用DateTime.UtcNow。我建议将数据库中的用户时区偏移保留在某处,然后从那里进行调整以便显示。