我有这一行:
TimeSpan duration =
Convert.ToDateTime(localSettings.Containers["userInfo"].Values["nextSpinUnlockTime"])
- Convert.ToDateTime(localSettings.Containers["userInfo"].Values["spinTimeStarted"]);
如果本地容器中的nextSpinUnlockTime
存储11/08/2015 10:54:23而spinTimeStarted
存储11/08/2015 07:54:23为什么duration
存储-800毫秒?
有谁知道出了什么问题..
我只调试该行,并在该行duration
的毫秒等于-800
更新
我有这个(我忘了提及添加的东西):
localSettings.Containers["userInfo"].Values["nextSpinUnlockTime"] = Convert.ToDateTime(localSettings.Containers["userInfo"].Values["spinTimeStarted"]).AddHours(3).ToString();
我已经调试了,减去毫秒的原因是因为它没有按预期增加3个小时。有谁理解为什么?
答案 0 :(得分:0)
ToString()
的默认DateTime
方法将值设置为秒:
DateTime sample = new DateTime(2015, 11, 6, 15, 14, 13, 123);
// 06.11.2015 15:14:13
// Note 123 (milliseconds) absence
Console.Write(sample.ToString());
// To check value up to millisecond use ".fff" Format
// 06.11.2015 03:14:13.123
Console.Write(sample.ToString("dd.MM.yyyy hh:mm:ss.fff"));
因此,在您的情况下,两个值都毫秒,但它们不会打印出来:
DateTime first = new DateTime(2015, 11, 8, 10, 54, 23, 900);
DateTime second = new DateTime(2015, 11, 8, 10, 54, 23, 100);
TimeSpan duration = second - first;
// The output:
// 08.11.2015 10:54:23 <- default ToString() - up to seconds
// 08.11.2015 10:54:23 <- default ToString() - up to seconds
// -00:00:00.8000000
Console.Write(String.Join(Environment.NewLine, first, second, duration));
答案 1 :(得分:0)
问题必须出在Convert.ToDateTime调用中。我的示例中看不到任何毫秒。为什么不尝试向转换方法提供有关您的文化的一些细节?
CultureInfo culture = new CultureInfo("en-GB");
var start = Convert.ToDateTime("11/08/2015 10:54:23", culture);
答案 2 :(得分:0)
经过很长一段时间,我的头撞在桌子上,我试着:
DateTime newDate = currentDateAndTime.AddHours(3);
它出现了正确的结果,因为它添加了额外的3个小时,我知道DateTime
对象是不可变的,但我不明白为什么它不起作用因为我没有分配值以currentDateAndTime
为例:
currentDateAndTime = currentDateAndTime.AddHours(3);
相反,我在做:
localSettings.Containers["userInfo"].Values["nextSpinUnlockTime"] = Convert.ToDateTime(localSettings.Containers["userInfo"].Values["spinTimeStarted"]).AddHours(3).ToString();
然而,它正在发挥作用,我感到无比快乐!
谢谢你们!
答案 3 :(得分:-2)
尝试使用DateTime.Subtract()
:
TimeSpan duration = Convert.ToDateTime(localSettings.Containers["userInfo"].Values["nextSpinUnlockTime"]).Subtract(Convert.ToDateTime(localSettings.Containers["userInfo"].Values["spinTimeStarted"]));
您可能需要查看duration.TotalMilliseconds