2

我正在尝试在使用该格式的时间戳上使用 DateTime.ParseExact,M/d/yyyy HH:mm:ss:fff编译器告诉我这不会发生。

我的时间戳的一个例子是:

3/26/2013 14:37:05:553

...我的代码的一个例子是,_CultureInfo 是 en-us。

DateTime someDateTime = DateTime.ParseExact("3/26/2013 14:37:05:553","M/d/yyyy HH:mm:ss:fff", _CultureInfo.DateTimeFormat);

看下面的图片是怎么回事......我错过了什么吗?

在此处输入图像描述

新编辑

我又尝试了几件事,但仍然没有运气:

  • 更改:fff.fff
  • 按照以下建议更改_CultureInfo.DateTimeFormatSystem.Globalization.CultureInfo.InvariantCulture和更改ddd

以下是您可以放入控制台并运行的内容,以查看它在我的最终表现如何。

    class Program
    {
        static void Main(string[] args)
        {
            CsvImporter importer = new CsvImporter();

            DateTime readtime = importer.Parse(@"""3/26/2013 14:37:07:238,00:00:01.6850000,23.138,23.488,23.175""");

            Console.WriteLine(readtime.ToString());
        }
    }

    class CsvImporter
    {
        public Char[] _SeparatorChars = new Char[] { ',' };

        public DateTime Parse(string text)
        {
            System.Globalization.CultureInfo _CultureInfo = System.Globalization.CultureInfo.CurrentCulture;

            string txt = text.Replace('"', ' ');
            string[] columns = txt.Split(_SeparatorChars);

            return DateTime.ParseExact(columns[0], "M/dd/yyyy HH:mm:ss:fff", _CultureInfo.DateTimeFormat);
            //return DateTime.ParseExact(columns[0], "M/dd/yyyy HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture);
        }
    }
4

3 回答 3

4

试试这个(d改为ddCultureInfo.InvariantCulture

DateTime someDateTime = DateTime.ParseExact("3/26/2013 14:37:05:553", "M/dd/yyyy HH:mm:ss:fff", CultureInfo.InvariantCulture);
于 2013-04-17T20:22:12.810 回答
1

问题在于string txt = text.Replace('"', ' ');

这正在column[0]变成[space]3/26/2013 14:37:05:553而不是3/26/2013 14:37:05:553像我期望的那样。

更改此行以string txt = text.Replace(@"""", "");解决问题。

于 2013-04-18T15:39:05.127 回答
0

每当您调用ParseExact时,请确保您使用的是明确的格式字符串。在 .NET 中,/格式字符串中的字符是系统日期分隔符,而不是实际的斜杠。有时也适用于:角色。

要使用您的结构解析字符串,请使用反斜杠转义斜杠和冒号,例如:

DateTime.ParseExact(s, @"M\/d\/yyyy HH\:mm\:ss\:fff", null)
// or
DateTime.ParseExact(s, "M\\/d\\/yyyy HH\\:mm\\:ss\\:fff", null)

这将告诉解析器您特别想要正斜杠和冒号,无论您的系统偏好或当前文化如何。

于 2013-04-18T15:31:50.907 回答