2015-03-08 3 views
0

У меня есть DateTime переменная в этом формате "dd/mm/yyyy hh:mm:ss". Я хотел был бы преобразовать это в "mm/dd/yyyy hh:mm:ss". (За месяц до дня) Я пытался использовать DateTime.Parse так:DateTime convert in C#

DateTime dt = new DateTime(); 
dt = dateTimePicker1.Value;    
dt = DateTime.Parse(dt.ToString(), "mm/dd/yyyy", null); 

, но это не будет работать. Я также пробовал его с DateTime.ParseExact(), но все равно ничего не произошло.

Любое предложение?

+0

Просто попробуйте 'DateTime.ToString ("ММ/дд/гггг чч: мм: сс")' и для 24-часовой формат использует 'HH'. –

+0

1) 'm' означает минуты. 'M' за месяц. 2) 'h' для формата 12h,' H' для 24-го формата. – CodesInChaos

+1

Переменная 'DateTime' не имеет формата. Только строки, представляющие дату, имеют формат. – CodesInChaos

ответ

5

A DateTime не имеет любой неявный формат. Он имеет только даты и время.

предмет форматирования только применяется при попытке получить его текстовое представление. Если вы хотите получить строковое представление о нем, вы можете использовать метод .ToString();

string s = dateTimePicker1.Value.ToString("MM/dd/yyyy hh:mm:ss", 
              CultureInfo.InvariantCulture); 

И помните, mm спецификатор за несколько минут, MM спецификатор в течение нескольких месяцев. Также hh спецификатор предназначен для 12-hour clock и HH спецификатор предназначен для 24-hour clock изображений. Вы может вместо этого использовать HH.

Я использовал InvariantCulture в качестве второго параметра, так как / и : имеют особое значение, как заменить меня текущую культуру или прилагаемую дату культуры или время разделителя.

+0

Спасибо alo't !!! – user3661263

+0

прописная буква 'H' пожалуйста – CodesInChaos

+0

@CodesInChaos Так как OP пишет, как' hh', я _just_ не хотел менять свой оригинальный формат. Но да, «HH» может быть лучше. Я добавил дополнительную информацию. –

0
string date = dateTimePicker1.Value.ToString("MM/dd/yyyy"); 
+0

Я думаю, что это не то, что хочет OP. –

+0

dt = DateTime.Parse (dt.ToString(), "mm/dd/yyyy", null); эта линия предполагает, что OP хочет этого. @ SonerGönül –

0
DateTime time = DateTime.Now;    
string format = "MMM ddd d HH:mm yyyy";  
Console.WriteLine(time.ToString(format)); 
+0

Ничего себе. Вы когда-нибудь читали вопрос? Откуда это миллисекунды? –

+0

не позволяет вам это сделать. виноват. но это может быть хорошей практикой. –

+0

Пожалуйста, избегайте ответов только на код – MickyD

0

Вы также можете использовать это ниже код для заранее:

GregorianCalendar cal = new GregorianCalendar(); // or any type of calendar you want ... 
string formatted = string.Format("{1:00}/{2:00}/{0} {3:00}:{4:00}:{5:00} ", 
     cal.GetYear(dt), cal.GetMonth(dt), cal.GetDayOfMonth(dt) , cal.GetHour(dt), cal.GetMinute(dt), cal.GetSecond(dt)); 
+0

Просто форматирование вашего 'dt' намного проще, чем ваш процесс. Это уже грогорский каландр. В этом случае вы не будете игнорировать какой-либо ваш код. –

+0

Да, конечно. Это полезно для других календарей. –