我在使用实体框架将时间插入我的数据库时遇到了问题。
背景:我正在使用UTC时间的PC构建这个应用程序。一旦建立,我将把它部署在UTC + 1的服务器上。它连接的数据库也在UTC + 1的服务器上。
因此,当我在本地运行到我的PC上时,我输入了一个时间,比如上午9点,它在数据库中保存为上午10点这和预期的一样。
当我在服务器上运行时,我输入的时间是上午9点,它在数据库中保存为上午11点这不是我所期望的,因为它应该有小时差,而不是2小时。
有谁能帮上忙吗。我当前的代码是:
static void Main(string[] args)
{
DateTime Start = Convert.ToDateTime("27/04/2015 08:00");
DateTime End = Convert.ToDateTime("27/04/2015 16:00");
// generate a schedule
ASML_ScheduleHeader schedule = new ASML_ScheduleHeader();
schedule.ScheduleId = Guid.NewGuid();
TimeZone localZone = TimeZone.CurrentTimeZone;
schedule.StartTime = localZone.ToLocalTime(DateTime.SpecifyKind(Start, DateTimeKind.Utc));
schedule.EndTime = localZone.ToLocalTime(DateTime.SpecifyKind(End, DateTimeKind.Utc));
using (CIC40PrimaryEntities _context = new CIC40PrimaryEntities())
{
try
{
Console.WriteLine("Adding Header");
_context.ASML_ScheduleHeader.Add(schedule);
_context.SaveChanges();
Console.WriteLine("Schedule added");
}
catch (Exception ex)
{
Console.WriteLine("Schedule not added");
}
Console.Read();
}
}发布于 2015-04-27 21:03:58
我强烈建议您始终使用协调世界时,您始终可以在表示层中将DateTime转换为本地时间。
因此,我会像这样存储它;
schedule.StartTime = DateTime.SpecifyKind(Start, DateTimeKind.Utc);如果您能给我们一些更明确的结果,也许是一些测试用例,这将有所帮助:)
https://stackoverflow.com/questions/29895430
复制相似问题