2016-12-02 9 views
0

Моё системное время имеет формат dd-MMM-yy (02-Dec-16). Формат, который я хочу преобразовать, это "yyyy/MM/dd". Я в основном играл вокруг со всеми другими форматами даты и времени, которые предлагает моя система, и это синтаксический заявление я понял, что работает для всех из них (кроме этого) -Формат объекта DateTime из формата системного времени в требуемый формат

CultureInfo provider = CultureInfo.InvariantCulture; 
string date_format = "yyyy/MM/dd HH:mm:ss tt"; 
DateTime now_value = DateTime.ParseExact(DateTime.Now.ToString(date_format), date_format, provider); 
return now_value.ToString(date_format); 

Но это Безразлично» t для вышеупомянутого формата dd-MMM-yy. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно здесь?

(Sidebar -Есть более эффективный способ, в котором я могу написать это выше фрагмент кода?)

+1

'now.ToString (' is it или 'now_value.ToString (' –

+0

now_value. Опечатка. Благодарю. – wave5459

ответ

2

Вам не нужно преобразовать DateTime в строку, а затем преобразовать обратно в DateTime и снова обратно в строку, если у вас есть DateTime вход просто позвоните ToString с форматом, как показано ниже

string dt =DateTime.Now.ToString("yyyy/MMM/dd", CultureInfo.InvariantCulture); 

для примера:

DateTime now_value = DateTime.ParseExact("02-Dec-16", "dd-MMM-yy", System.Globalization.CultureInfo.InvariantCulture); 
return now_value.ToString("yyyy/MM/dd"); 
+0

Я отредактировал мой требуемый формат. Но позвольте мне попробовать это с отредактированным форматом. – wave5459

+0

Что такое 'провайдер', который вы использовали в вашем примере? – Damith

+0

Поставщик, как вы предполагали, - «CultureInfo.InvariantCulture». – wave5459

1

Попробуйте:

string date_format = "yyyy-MMM-dd"; 
string date_now = DateTime.Now.ToString(date_format,CultureInfo.CreateSpecificCulture("en-US")); 
return date_now; 

Даже Это также должно работать:

string date_format = "yyyy-MMM-dd"; 
string date_now = DateTime.Now.ToString(date_format); 
return date_now; 
+0

Я хотел избежать определенной культуры. Следовательно, я использовал InvariantCulture. Спасибо за ваш ответ :) – wave5459

0

Я думаю, что лучше всего было бы создать метод расширения для нескольких форматов даты,

var inputDate = "02-Dec-2016"; 
string[] availaible_input_date_format = { "dd-MMM-yyyy", "dd/MMM/yyyy" }; // add as many formats availible 
var date_format = "yyyy/MMM/dd"; 
DateTime outputDate; 
DateTime.TryParseExact(inputDate, availaible_input_date_format, null, DateTimeStyles.None, out outputDate); 
Console.WriteLine(outputDate.ToString(date_format)); 
0

Вы можете попробовать это:

datetime yourdatetime = new datetime(); 
string converteddatetime = yourdatetime.toString("yyyy/MM/dd"); 
+0

Это всегда возвращает «0001-01-01». – wave5459

+0

его просто пример abhiii5459. –

+0

использовать только строку convertdatetime = yourdatetime.toString ("yyyy/MM/dd"); –

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