2016-03-14 7 views
0

Я пытаюсь преобразовать строку данных, включая миллисекунды, в DataTime. Я попытался использовать DateTime.TryParseExact, но это не дает мне миллисекунды.Как анализировать строку даты даты, включая миллисекунды, используя C#?

Вот что я устал

public static DateTime? dateTimeVal(string raw, string format = null) 
{ 
    DateTime final; 

    if(raw != null){ 

     if(format != null){ 

      string[] formats = new[] { format }; 

      if (DateTime.TryParseExact(raw, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out final)) 
      { 
       return final; 
      } 
     } 

     if (DateTime.TryParse(raw, out final)) 
     { 
      return final; 
     } 

    } 

    return null; 
} 

Это, как я использую метод выше

DateTime? dt = dateTimeVal("2016-03-14 11:22:21.352", "yyyy-MM-dd HH:mm:ss.fff"); 

Однако, дт дает мне эту 3/14/2016 11:22:21 AM

Как я могу получить значение включают миллисекунды?

+0

Как вы проверки, если результат является правильным? Вы печатаете значение? Регистрация? Использование Console.WriteLine? Можете ли вы показать код, который вы используете, чтобы проверить результат? –

ответ

0

Если вы хотите получить DateTime как string с milisecond, тогда вы можете использовать следующий код;

string dateTime = dt.Value.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);     

Надеюсь, это поможет.

+1

Я не хочу, чтобы конечное значение являлось строкой. Я хочу, чтобы это было DataTime –

+0

@MikeA, тогда вы можете использовать свойство dt.Value.Millisecond. –

1
DateTime final = new DateTime(); 
var test = DateTime.TryParseExact("2016-03-14 11:22:21.352", new string[] { "yyyy-MM-dd HH:mm:ss.fff" }, CultureInfo.InvariantCulture, DateTimeStyles.None, out final); 

Это работает для меня.

enter image description here

Просто уход за fff. Если вы запишете их в верхнем регистре, миллисекунды будут подавлены. В нижнем регистре они будут обрабатываться.

Единственное, что я могу себе представить, это использовать .ToString без предоставления каких-либо форматов. Тогда вы получите:

enter image description here

Вы уверены, что вы написали, обеспечивающий формат нижнего регистра внутри кода? Также вы использовали .ToString() с выходным форматом, который показывает миллисекунды?

0

DateTimeFormatInfo.CurrentInfo.FullDateTimePattern

+2

Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно того, почему и/или как этот код отвечает на вопрос, улучшает его долгосрочную ценность. – ryanyuyu

Смежные вопросы