我想将Timespan转换为Datetime。我怎样才能做到这一点?
我在Google上找到了一种方法:
DateTime dt;
TimeSpan ts="XXX";
//We can covnert 'ts' to 'dt' like this:
dt= Convert.ToDateTime(ts.ToString());
还有其他方法吗?
我想将Timespan转换为Datetime。我怎样才能做到这一点?
我在Google上找到了一种方法:
DateTime dt;
TimeSpan ts="XXX";
//We can covnert 'ts' to 'dt' like this:
dt= Convert.ToDateTime(ts.ToString());
还有其他方法吗?
DateTime
两个相关部分之间的差异,也可以指示两者之间的差异DateTime
,您至少应该知道/假设有什么事情,可以用1 Hour timespan
什么来表示?
Answers:
将TimeSpan转换为DateTime并不是很合逻辑。尝试了解上面的嬉皮士说的话。TimeSpan的持续时间为6天5小时40分钟。不是日期。如果我说6天;你能从中推断出一个日期吗?除非您有参考日期,否则答案是否定的。
因此,如果要将TimeSpan转换为DateTime,则需要一个参考日期。从什么时候开始的6天5个小时?所以你可以这样写:
DateTime dt = new DateTime(2012, 01, 01);
TimeSpan ts = new TimeSpan(1, 0, 0, 0, 0);
dt = dt + ts;
您需要参考日期才能有用。
来自http://msdn.microsoft.com/zh-CN/library/system.datetime.add.aspx的示例
// Calculate what day of the week is 36 days from this instant.
System.DateTime today = System.DateTime.Now;
System.TimeSpan duration = new System.TimeSpan(36, 0, 0, 0);
System.DateTime answer = today.Add(duration);
System.Console.WriteLine("{0:dddd}", answer);
var StartTime = new DateTime(item.StartTime.Ticks);
上述所有问题是,转换返回的时间天数不正确,如在TimeSpan中指定的那样。
使用上面的方法,下面的方法返回3而不是2。
关于如何在TimeSpan参数中保留2天并将其返回为DateTime日的想法?
public void should_return_totaldays()
{
_ts = new TimeSpan(2, 1, 30, 10);
var format = "dd";
var returnedVal = _ts.ToString(format);
Assert.That(returnedVal, Is.EqualTo("2")); //returns 3 not 2
}
首先,将时间跨度转换为字符串,然后转换为DateTime,然后转换为字符串:
Convert.ToDateTime(timespan.SelectedTime.ToString()).ToShortTimeString();