欧洲和美国之间的转换与+0000日期上月底
我试图从欧洲的日期格式更改为美国(YYYY-MM-DD HH:MM:SS),所以据我所知这应该工作:欧洲和美国之间的转换与+0000日期上月底
var dateString = array[4];
var date = DateTime.ParseExact(dateString, "dd/MMM/yyyy:HH:mm:ss", CultureInfo.InvariantCulture);
var newDateString = date.ToString("yyyy-MM-dd HH:mm:ss");
//inserting the new date and time into the array
array[4] = newDateString;
输入:14/Dec/2014:15:25:34
但是,如果我看到新的文件输出的格式如下:
14/12/2014 15:25:34
编辑::从这一行我的代码来的错误:
writer.WriteLine(string.Join(",", array.Where(s => !string.IsNullOrEmpty(s))))
当更改为'string.Join(“,”...“格式正确。
使用zzz
为UTC偏移格式说明
var dateString = "24/Oct/2014:13:52:12 +0100";
var date = DateTime.ParseExact(dateString, "dd/MMM/yyyy:HH:mm:ss zzz", CultureInfo.InvariantCulture);
var newDateString = date.ToString("yyyy-MM-dd HH:mm:ss");
然而,时区的敏感信息,你或许应该DateTimeOffset
工作,它为您提供了不同的时区的控制。
如果你要处理多种格式,但仍想使用准确的分析,使用接受的格式排列的过载(和的DateTimeOffset如前所述):
DateTimeOffset.ParseExact(dateString, new[] { "dd/MMM/yyyy:HH:mm:ss zzz", "dd/MMM/yyyy:HH:mm:ss" }, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal);
如果我更改我的代码,它会抛出一个错误,基本上说这个格式不是dateString持有的。在调试器上,它实际上显示日期/时间格式为:“14/Dec/2014:15:25:34”。但是,当传递到newDateString时,它仍然给出了问题中看到的格式。任何想法为什么?我的格式化newDateString的代码中有错误吗? – johnfish92
请具体说明......是否包含UTC偏移量的字符串?''“14/Dec/2014:15:25:34”'不适用于'zzz',但'“24/Oct/2014:13:52:12 +0100”'。 – grek40
在查看调试器时,我注意到'+0100'出于某种原因没有存储在dateString中,但是我仍然有一种轻微的感觉,它停止了正确的格式,因为我用我的代码编辑了这个问题,并且看不出为什么或者哪里不正确? – johnfish92
调试器使用您的本地文化首选项将DateTime变量转换为字符串。你知道它确实工作正常,14不是有效的月份。你没有真正的问题。 –
@HansPassant它不能正常工作..正常工作会给我一个格式为'yyyy-MM-dd HH:mm:ss'的日期输出?或者我错过了什么..? – johnfish92
你的代码工作得很好。调试它,并在'newDateString'中获得'2014-12-14 15:25:34'。所以问题一定是,如果我明白你在做什么,什么时候你把它写在一个新文件中 – Pikoh