解析特定格式的日期/时间字符串

3

我从外部系统接收到一些文件,日期/时间表示为28/Jul/2015:01:02:36 -0500

在C#中将其解析为DateTime类型的最佳方法是什么?


1
这看起来对我来说是一个相当奇怪的格式。我的猜测是你需要使用一些Regex方法和DateTime.Parse方法的组合。 - Dan Forbes
@DanForbes 是的,它来自WebSEAL日志文件。 - hardywang
您能确认年份和小时之间没有空格和冒号,并且秒数和-0500之间有一个空格吗? - Steve
@Steve 我确认。你看到的就是我原封不动从日志文件中复制出来的。 - hardywang
1
你可能想考虑使用DateTimeOffset而不是DateTime。特别是如果-05:00不是你所在时区的偏移量。 - Matt Johnson-Pint
3个回答

5

关于C#中的自定义日期格式,您可以在此处查找更多信息:

MSDN上的自定义日期格式

以下是一些代码帮助您入门。

首先,确定您期望的正确格式字符串,然后使用ParseExact

static void Main(string[] args)
{
    var date = "28/Jul/2015:01:02:36 -0500";
    var formatstring = "dd/MMM/yyyy:HH:mm:ss K";

    var d = DateTime.ParseExact(date, formatstring, null);
    Console.WriteLine(d);
    Console.ReadLine();
}

希望这能帮到你!

2

尝试

CultureInfo provider = CultureInfo.InvariantCulture;
var dateString = "28/Jul/2015:01:02:36 -0500";
var format = "dd/MMM/yyyy:hh:mm:ss zzzz";
var date = DateTime.ParseExact(dateString,format,provider);

2
这个怎么样?
DateTime d;
DateTime.TryParseExact(target,"dd/MMM/yyyy:hh:mm:ss zzzz", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out d);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接