使用ISO 8601日期格式添加两秒钟

时间:2014-09-06 06:50:09

标签: c# .net datetime

我遇到了有关ISO 8601格式的日期时间操作的问题。问题是我有一个这样的日期字符串

 string date = "2014-09-05T23:39:57-04:00"; 

我需要在此日期再添加2秒。

但是当我尝试使用DateTime.Parse方法转换此字符串以添加2秒时,DateTime.Parse方法将日期更改为“9/6/2014 9:09:57 AM”。但我需要像这样的结果

string calculateddate = "2014-09-05T23:39:59-04:00";

如何实现?

由于 Utpal Maity

1 个答案:

答案 0 :(得分:1)

试试这个:

// you start with this string - it contains a time-zone information
string date = "2014-09-05T23:39:57-04:00";

// this is a DateTimeOffset - and this doesn't have any format - it's a binary blob of 8 bytes 
DateTimeOffset yourDate = DateTimeOffset.Parse(date);

// add two seconds to it - this is still an 8 byte binary blob ....
DateTimeOffset twoSecondsAdded = yourDate.AddSeconds(2);

// display it in the format you want
string output = twoSecondsAdded.ToString("yyyy-MM-ddTHH:mm:ss K");

Console.WriteLine("Date with 2 seconds added: {0}", output);

你应该得到一个输出:

Date with 2 seconds added: 2014-09-05T23:39:59 -04:00

理解

非常重要
  • 由于日期字符串中有时区说明符,因此必须使用DateTimeOffset
  • .NET中的DateTimeOffset(或DateTime)只是一个8字节的二进制文件 - 它没有任何格式
  • 您可以按照自己喜欢的方式显示DateTimeOffset - 只需使用相应的.ToString()覆盖来指定格式

详细了解Custom Date and Time Format Strings on MSDN