我遇到了有关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
答案 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
DateTimeOffset
(或DateTime
)只是一个8字节的二进制文件 - 它没有任何格式DateTimeOffset
- 只需使用相应的.ToString()
覆盖来指定格式