我正在获取可执行文件的“LastWriteTime”,并将其与我设置的内部 DateTime 进行比较。如果 LastWriteTime 小于或等于内部 DateTime,那么我将从数据库中清除两个表。
这段代码在太平洋时区非常适合我。但是,如果用户在另一个时区(例如比我早 4 小时),则它不起作用,因为“LastWriteTime”返回转换为他们时区的时间。例如,我正在寻找“12/12/2012 8:38:12 AM”的值,如果他们比我早 4 小时,该值会自动更改为“12/12/2012 12:38:12 PM”在他们的系统上。
有人可以告诉我我应该在我的代码中修改什么以考虑不同的时区,因此“LastWriteTime”和我的“build2023_EXE_Date”变量都返回相同的日期/时间,所以我对两个日期/时间值的比较不会'无论我的最终用户在哪个时区,都不会失败?
我使用的是 .NET 3.5,而不是 .Net 4.x
//http://stackoverflow.com/questions/1600962/displaying-the-build-date
string w_file = "MyEXE.exe";
string w_directory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
Path.DirectorySeparatorChar + "MyEXE";
DateTime currentExeTime = File.GetLastWriteTime(System.IO.Path.Combine(w_directory, w_file));
DateTime build2023_EXE_Date = new DateTime(2012, 12, 12, 8, 38, 12); //"12/12/2012 8:38:12 AM"
//We need to truncate the millisecond time off of the EXE LastWriteTime
//or else when we compare to our internal DateTime build2323_EXE_Date value,
//it will not match
//http://stackoverflow.com/questions/1004698/how-to-truncate-milliseconds-off-of-a-net-datetime
currentExeTime = new DateTime(
currentExeTime.Ticks - (currentExeTime.Ticks % TimeSpan.TicksPerSecond),
currentExeTime.Kind
);
if (currentExeTime <= build2023_EXE_Date) //If previous build matches or is before the Build 2023 date then clear these two tables.
{
//This will fail the comparision if the user is in a different time zone than me.
//Clear tables
}