2015-03-16 12 views
2

Я хотел бы преобразовать строку в формате DateTimeПреобразовать DateTime Формат C#

CultureInfo cultureInfoProvider = new CultureInfo("en-US"); 
var lastUpdatedDate = updatedVAlue.Max(); //value is 20150219T045452:635599184921416348 
DateTime dt = DateTime.ParseExact(lastUpdatedDate,"yyyyMMddTHHmmss:fff",cultureInfoProvider); 

Я получаю исключение Струнный не был признан действительным DateTime.

+1

Что произойдет, если строка "20150219T045452: 635"? – user2864740

+0

Ваш формат patter говорит * будет 3 цифры после ':' *, но ваша строка ввода имеет намного больше 3. – MarcinJuraszek

+0

Его предоставление бросания исключения, если я даю 3 fff или как нет цифр после запятой – Coder

ответ

1

Здесь вы находитесь. Это украсит вашу строку и сохранит ее 3-значный хвост.

CultureInfo cultureInfoProvider = new CultureInfo("en-US"); 
    string lastUpdatedDate = updatedVAlue.Max(); //value is 20150219T045452:635599184921416348 
    string[] parse = lastUpdatedDate.Split(':'); 
    lastUpdatedDate = parse[0] + ":" + parse[1].Substring(0,3); 
    DateTime dt = DateTime.ParseExact(lastUpdatedDate,"yyyyMMddTHHmmss:fff",cultureInfoProvider); 

Испытано здесь: https://ideone.com/EIs600


Примечание: Если можно попытаться избежать использования var в C#, в этом случае string будет делать эту работу.

+2

В этом случае я согласен с использованием 'string', а не' var', но просто для уточнения: это просто для чтения кода. Функционально они одинаковы. – Thorarin

1

может быть у г ищет этого ..

CultureInfo cultureInfoProvider = new CultureInfo("en-US"); 

var lastUpdatedDate = updatedVAlue.Max();//value is 20150219A045452.635-5

DateTime dt = DateTime.ParseExact("20150219A045452.635-5", "yyyyMMddtHHmmss.fffz", cultureInfoProvider); 
+0

Мое значение сильно отличается от того, который вы сохранили, проверьте мой код один раз – Coder

+0

Не очень гибкий, он не сработает для «20150219T045452: 6355-5» и т. д. –

+0

ну тогда в таком случае .. регулярное выражение должно использоваться, чтобы сделать строку совместимой с нашей формат, а затем преобразовать в DateTime – Amit

0

существует проблема в 635599184921416348 частей. это слишком lenth, поддержка только max семь цифр. попробуйте это.

CultureInfo cultureInfoProvider = new CultureInfo("en-US"); 
var lastUpdatedDate = "20150219T045452:6355991"; 
DateTime dt = DateTime.ParseExact(lastUpdatedDate, "yyyyMMddTHHmmss:fffffff", cultureInfoProvider);