我有相同的结果1338161400当我这样做
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime date = DateTime.Parse(@"28/05/12 01:30");
TimeSpan diff = date.ToUniversalTime() - origin;
Console.WriteLine( (Math.Floor(diff.TotalSeconds)).ToString());
当我使用date.AddHours(-4):
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime date = DateTime.Parse(@"28/05/12 01:30");
date.AddHours(-4);
TimeSpan diff = date.ToUniversalTime() - origin;
Console.WriteLine( (Math.Floor(diff.TotalSeconds)).ToString());
我尝试得到1338168600喜欢http://www.mbari.org/staff/rich/utccalc.htm
更新:
谢谢我改了
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime date = DateTime.Parse(@"28/05/2012 01:30");
date = date.AddHours(-4);
date = date.ToUniversalTime();
TimeSpan diff = date - origin;
Console.WriteLine((Math.Floor(diff.TotalSeconds)).ToString());
但是我拿到了1338147000还是没有1338168600
9条答案
按热度按时间cczfrluj1#
日期是不可变的对象,即在创建之后不能修改它们。AddHours返回一个新的DateTime示例,该示例向后移动4小时,但不会修改“date”。
用途:
z9smfwbn2#
AddHours
返回一个 newDateTime
对象,它是将小时数添加到原始值上的结果。原件保持不变。因此,您需要
date = date.AddHours(-4);
而不仅仅是date.AddHours(-4);
dgsult0t3#
原始日期设置为向后4小时,但您没有将其设置为新日期。试试这个:
ecfdbz9o4#
AddHours
只是返回新的递增日期,使用以下:gijlo24d5#
DateTime不是不可变的。只是DateTime方法不会更改结构体,而是返回一个新的结构体。
如果您这样做:
然后,结构体d1将被d2的值覆盖。
我不知道是否有可能有一个不可变的结构。
bd1hkmkf6#
AddHours返回新的DateTime对象。这样做:
文件:link
dgsult0t7#
试试这个是否有效:
这似乎改变了一天中的日期也就增加了小时。
zbq4xfa08#
这是我的解决方案:
方法SetTime使你想要的。
GetDateTimes方法防止交换开始(较旧的日期)和结束(较新的日期)。
(我从这个question开始。)
wxclj1h59#
试试这个为我工作的: