2017-02-17 9 views
0

Я хочу преобразовать строку как: "25/12/2017 4:00 PM" в "12/25/2017 4:00 PM". Мой код:Преобразование dd/MM/yyyy HH: mm tt to MM/dd/yyyy HH: mm tt in C#

var TDXRSC = "25/12/2017 4:00 PM"; 
DateTime.ParseExact(TDXRSC, "dd/MM/yyyy hh:mm tt", CultureInfo.InvariantCulture); 

Но это не работает.

+1

Что «Но это не работает.» имею в виду? – Enigmativity

+0

Думаю, вам просто нужно '" "dd/MM/yyyy h: mm tt" "'. – Enigmativity

ответ

2

Проблема заключается в том, что ваш формат даты - dd/MM/yyyy hh:mm tt, но контрольная дата имеет только одну цифру час 4. Вероятно, вам лучше не ждать ведущих нулей в течение нескольких дней, месяцев или часов.

Try ..

var TDXRSC = "25/12/2017 4:00 PM"; 
var input = DateTime.ParseExact(TDXRSC, "dd/MM/yyyy h:mm tt", CultureInfo.InvariantCulture); 

Это также еще разобрать 2 цифры часов. Таким образом, var TDXRSC = "25/12/2017 12:00 PM"; все равно будет правильно разбираться.

+0

Я понял. Спасибо, @ Нико. –

+0

@ Ken99 хорошо произведение. Я предлагаю попробовать разные сценарии отсутствия ведущих значений 0 или одного знака. Месяцы и дни могут также вызвать проблему в будущем. – Nico

0
var TDXRSC = "25/12/2017 4:00 PM"; 
var input = DateTime.ParseExact(TDXRSC, "dd/MM/yyyy h:mm tt", CultureInfo.InvariantCulture); 
var output = input.ToString("MM/dd/yyyy h:mm tt"); 

Когда вы звоните ParseExact вы сообщаете компилятору, какой формат входящего дата. Затем вы можете использовать метод ToString(), чтобы предоставить формат строкового представления разобранной даты.

+0

Вы проверили этот код? 'FormatException: String не была признана действительной DateTime.' – Enigmativity

+0

Когда я вызываю ParseExact, я получаю сообщение об ошибке:« строка не была признана действительным дата-временем » –

+0

@ Код энигматичности в порядке, формат даты ввода может быть некорректным, но концепция звучит – CynePhoba12

0

Надежда, что .TryParseExtract будет более безопасно использовать для преобразования, используйте следующий вид:

var dateString = "25/12/2017 4:00 PM"; 
DateTime inputDate; 
if(DateTime.TryParseExact(dateString, "dd/MM/yyyy h:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out inputDate)) 
{ 
    var output = inputDate.ToString("MM/dd/yyyy hh:mm tt"); 
    Console.WriteLine(output); 
} 
else 
{ 
    Console.WriteLine("Conversion failed"); 
} 

Working Example

0
var TDXRSC = "25/12/2017 4:00 PM"; 
DateTime date = Convert.ToDateTime(TDXRSC); 
string Format = date.ToString("MM/dd/yyyy h:mm tt");