2013-07-03 44 views
0

这与此链接类似:"Add the current time to a DateTime?"但我的情况完全不同。将当前的Date.Now添加到TimeSpan?

我想知道如何将您的时间范围(例如:上午10:00)添加到您的Date.Now(例如7/3/2013)?我试过DateTime.Now.Add(timeSpan)但它不起作用。

有什么建议吗?

+8

你需要看看返回的值... – leppie

+1

它是如何工作的?上午10:00不是一个时间段,但是'DateTime.Add'需要一个时间跨度参数,所以如果你有一个它应该工作。请注意,返回一个新的DateTime,它不会修改DateTime.Now的值。 – Lee

+0

@李:它怎么不起作用?这是因为我没有得到7/3/2013上午10点,而是7/4/2013上午4点。我不想使用字符串操作,因为这将是“愚蠢的编码”。 – Musikero31

回答

1

可以使用+操作:

TimeSpan ts = TimeSpan.FromHours(10); 
DateTime result = DateTime.Now + ts; 

然而,DateTime.Add也应该工作。我假设你的“TimeSpan”是一个字符串。

因为你的时间跨度包含AM/PM指示,您可以在解析到DateTime代替,并添加TimeOfDay -TimeSpan到DateTime.Now

DateTime time = DateTime.ParseExact("10:00AM", "hh:mmtt", CultureInfo.InvariantCulture); 
DateTime result = DateTime.Now + time.TimeOfDay; 

Demo

编辑:如果你想添加TimeSpan至午夜使用DateTime.Today而不是DateTime.Now

3

DateTime是不可变的,所以你现有的变量不会改变。

var myDateTime = DateTime.Now.Add(timeSpan);