Преобразовать дату c#

#c#

#c#

Вопрос:

У меня есть дата в следующем формате:

 20/01/2011 7:15:28 PM
  

Мне нужно преобразовать это во что-то вроде:

 2011-01-20 09:24:06
  

Как бы я это сделал?

Заранее спасибо.

Комментарии:

1. Вот первый пример из Google.

2. Предполагается, что это также изменит ваше время?

3. @Майкл Тодд сформулировал это как ответ, это полный ответ.

4. @Amr Я не хочу баллов за такой тривиальный вопрос.

Ответ №1:

 DateTime.ParseExact("20/01/2011 7:15:28 PM",
                    "dd/MM/yyyy h:mm:ss tt",
                    CultureInfo.InvariantCulture)
        .ToString("yyyy-MM-dd HH:mm:ss")
  

Комментарии:

1. Это может привести к сбоям в соответствии с текущей локализацией. Лучше использовать ParseExact . И, конечно, результат будет на 10 часов отличаться от указанного правильного результата.

Ответ №2:

Наиболее явным способом сделать это было бы:

 DateTime.ParseExact("20/01/2011 7:15:28 PM", "dd/MM/yyyy h:m:s tt",
    CultureInfo.InvariantCulture).ToString("yyyy-MM-dd HH:mm:ss")
  

Ответ №3:

Сначала вам нужно проанализировать исходную дату (при условии, что у вас ее еще нет как DateTime ), затем вам нужно будет ее отформатировать, см. Форматирование даты в c #

Ответ №4:

 DateTime time = DateTime.Now;              // Use current time
string format = "yyyy-MM-dd HH:mm:ss";    // Use this format
time.ToString(format);  // Write to console
  

Форматы

 d
Use this to specify the numeric value for the day of the month. It will be one or two digits long.

dd
This is the same as a single d, except there are always two digits, with a leading 0 prepended if necessary.

ddd
This displays a three-letter string that indicates the current day of the week.

dddd
This displays the full string for the day of the week.

f
ff
fff
ffff
fffff
ffffff
fffffff
F
FF
FFF
FFFF
FFFFF
FFFFFF
FFFFFFF
Use the lowercase f to indicate the seconds to one digit length. Use two lowercase fs to indicate the seconds to two digits. The uppercase F patterns do the same but work differently on trailing zeros.

gg
Use this to display A.D. on your date. It is unlikely that this will be B.C. in most programs.

h
Display the hours in one digit if possible. If the hours is greater than 9, it will display two digits. Range is 1-12.

hh
Display the hours in two digits always, even if the hour is one digit. The range here will be 01-12.

H
This represents the hours in a range of 0-23, which is called military time in some parts of the world.

HH
This represents the hours in a range of 00-23. The only different here between the single H is that there is always a leading zero if the number is one digit.

K
Use this to display time zone information.

m
mm
This formats the minutes in your date format string. Here, the one m means that there is only one digit displayed if possible. The two ms means that there are always two digits displayed, with a leading zero if necessary.

M
MM
These display the months in numeric form. The one uppercase M does not have a leading zero on it. The two uppercase Ms will format a number with a leading zero if it is required.

MMM
This displays the abbreviated three-letter form of the month represented in the DateTime.

MMMM
This displays the full month string, properly capitalized.

s
ss
The lowercase s displays seconds. A single lowercase s means that you do not require a leading zero. Two lowercase s characters means you always want two digits, such as 00-59.

t
Use the lowercase t to indicate A, when the time is in the AM, and P, for when the time is in PM.

tt
Use two lowercase tts to display the full AM or PM string. You will normally want this for when you are displaying the string to a user.

y
yy
yyy
yyyy
yyyyy
These display the year to different digits. In your programs, you won't need three digits for the year, or five. Therefore, you should only consider one y, two ys, or four ys.

z
zz
zzz
These represent the offset from the UTC time on the local operating system.

:
This is the time separator.

/
This is the date separator.
  

С уважением

Ответ №5:

Проверьте это:

 String Mydate = "20/01/2011 7:15:28 PM";

String result = DateTime.Parse(MyDate).ToString("yyyy-MM-dd HH:mm:ss") 

MessageBox.Show(result);
  

С уважением