我正在以下列格式获取时间戳字符串 -
2015-02-01T12:11:06Z
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为DateTime对象.我尝试了以下代码 -
timestamp = DateTime.ParseExact(attr.Value,"yyyy-MM-ddThh:mm:ss",null);
Run Code Online (Sandbox Code Playgroud)
但它正在抛出异常.
System.FormatException:String未被识别为有效的DateTime.
在System.DateTimeParse.ParseExact(String s,String format,DateTimeFormatInfo dtfi,DateTimeStyles style)
at System.DateTime.ParseExact(String s,String format,IFormatProvider provider)
我知道我的格式错了.有什么方法可以使它工作?
更新
J. Steen的方法对我有用,他是第一个发表评论的人,但SonerGönül提供了更好的解释和更好的方法,所以我接受SonerGönül 在这里提到的答案以及J. Steen同意这一点.感谢你们俩.无论如何,我正在支持所有正确的答案.:-)
你忘记了Z最后的部分并hh改为HH;
string s = "2015-02-01T12:11:06Z";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
Console.WriteLine(dt); // 01/02/2015 14:11:06
}
Run Code Online (Sandbox Code Playgroud)
由于没有自定义日期和时间格式Z,解析方法将其视为字符文字.但是在这种情况下,你的小时部分会有所不同,OffSet因为这个操作会创建你的DateTimeKindas Local.由于我现在的偏移是+02:00正确的,它将产生14:11:06,而不是12:11:06
string s = "2015-02-01T12:11:06";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
Console.WriteLine(dt); // 01/02/2015 12:11:06
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |