【问题标题】:.NET Date Add Days.NET 日期添加天数
【发布时间】:2025-11-29 18:15:01
【问题描述】:

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

【问题讨论】:

  • 恭喜您使用 ISO8601 :-)

标签: c# .net vb.net datetime datetime-format


【解决方案1】:

尝试使用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% 匹配您的格式。

【讨论】:

  • 添加天数后,datefomat 已更改,能否保持相同格式?
  • @user608576 - 您可以使用 ToString() 转换为任何格式的字符串。
【解决方案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")

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      看起来像 datetimeoffset。也许来自sql server?您应该能够使用 datetimeoffset 结构和 parse 方法。一旦有了 datetimeoffset 类型,您就可以使用 addhours 或相关方法。

      【讨论】: