2011-05-19 101 views
2

我有这种格式的日期“1999-05-31T13:20:00.000-05:00”我想给它添加几个小时或几天。有人可以建议如何使用这种格式和AddDays或AddHours?结果需要返回相同的格式。.NET日期添加日期

+0

使用ISO8601 :-) – SSS 2011-05-19 05:59:41

回答

9

尝试使用DateTimeOffset.Parse。然后使用AddDaysAddHours

如果您想保留您解析的相同时区偏移量,则使用DateTimeOffset而非DateTime是很重要的。

var dateTimeOffset = DateTimeOffset.Parse("1999-05-31T13:20:00.000-05:00"); 
var newDateTimeOffset = dateTimeOffset.AddHours(1); 
var newDateTimeString = newDateTimeOffset.ToString("O"); 

,如果你不喜欢的方式 “O” 的格式,您可以使用此:

var newDateTimeString = newDateTimeOffset.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffK") 

这将100%匹配到你的格式。

+0

将日期添加到datefomat后,它可以保持相同的格式吗? – 2011-05-19 01:08:03

+0

@ user608576 - 您可以使用ToString()将其转换为任何格式的字符串。 – 2011-05-19 01:24:02

0

使用DateTime.Parse(...)创建DateTime对象。然后你可以添加几天和/或几小时,然后ToString()获得新的字符串。

+0

将它返回相同的格式恭喜? – 2011-05-19 00:56:12

+0

这取决于您在ToString()中指定的格式 – 2011-05-19 00:57:10

0

看起来像datetimeoffset。也许从SQL Server?你应该能够使用datetimeoffset结构和解析方法。一旦你有一个datetimeoffset类型,你可以使用addhours或相关的方法。

2

例子:

txt_del.Text = Calendar1.SelectedDate.ToString("MM/dd/yyyy"); 
/* for date picking textbox*/ 

double d2 = double.Parse(txt_till.Text); 
/*second textbox for number of days to add*/ 

DateTime tom = Calendar1.SelectedDate.AddDays(d2); 
/*for adding number of days to selected date*/ 

txt_total.Text = tom.ToString("MM/dd/yy")