Định dạng C # DateTime để định dạng YYYYMMDDHHMMSS


621

Tôi muốn chuyển đổi định dạng C # DateTime thành định dạng "YYYYMMDDHHMMSS". Nhưng tôi không tìm thấy một phương thức tích hợp để có được định dạng này? Có ý kiến ​​gì không?

Câu trả lời:


1061
DateTime.Now.ToString("yyyyMMddHHmmss"); // case sensitive

35
Có phải chỉ tôi là người nghĩ rằng sẽ có M lớn trong nhiều tháng rồi H lớn trong nhiều giờ?
Nick

69
m = phút / M = tháng, h = 12 giờ, H = 24 giờ. Tôi nghi ngờ ai đó bắt đầu với thời gian và nói hms = giờ phút giây, sau đó H trở thành 24 giờ và sau đó họ đã hẹn hò và hết những lá thư độc đáo nên đã đi cùng trường hợp. Chỉ cần một trong những điều đó.
Douglas Anderson

2
Làm thế nào bạn sẽ phân tích lại mà sử dụng DateTime.Parse()?
Tiền lớn

12
@BigMoney bạn sẽ sử dụng DateTime.PudeExact: var now = DateTime.PudeExact (stringVersion, "YYYYMMDDHHMMSS", CultureInfo.InvariantCARM);
Jim Lamb

4
@BigMoney Khi phân tích cú pháp, formattrường hợp cũng phân biệt chữ hoa chữ thường, tức làDateTime.ParseExact(stringValue, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
Nigel Touch

577

Trang web này có các ví dụ tuyệt vời kiểm tra nó

// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}",      dt);  // "8 08 008 2008"   year
String.Format("{0:M MM MMM MMMM}",      dt);  // "3 03 Mar March"  month
String.Format("{0:d dd ddd dddd}",      dt);  // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}",          dt);  // "4 04 16 16"      hour 12/24
String.Format("{0:m mm}",               dt);  // "5 05"            minute
String.Format("{0:s ss}",               dt);  // "7 07"            second
String.Format("{0:f ff fff ffff}",      dt);  // "1 12 123 1230"   sec.fraction
String.Format("{0:F FF FFF FFFF}",      dt);  // "1 12 123 123"    without zeroes
String.Format("{0:t tt}",               dt);  // "P PM"            A.M. or P.M.
String.Format("{0:z zz zzz}",           dt);  // "-6 -06 -06:00"   time zone

// month/day numbers without/with leading zeroes
String.Format("{0:M/d/yyyy}",           dt);  // "3/9/2008"
String.Format("{0:MM/dd/yyyy}",         dt);  // "03/09/2008"

// day/month names
String.Format("{0:ddd, MMM d, yyyy}",   dt);  // "Sun, Mar 9, 2008"
String.Format("{0:dddd, MMMM d, yyyy}", dt);  // "Sunday, March 9, 2008"

// two/four digit year
String.Format("{0:MM/dd/yy}",           dt);  // "03/09/08"
String.Format("{0:MM/dd/yyyy}",         dt);  // "03/09/2008"

Định dạng DateTime tiêu chuẩn

String.Format("{0:t}", dt);  // "4:05 PM"                           ShortTime
String.Format("{0:d}", dt);  // "3/9/2008"                          ShortDate
String.Format("{0:T}", dt);  // "4:05:07 PM"                        LongTime
String.Format("{0:D}", dt);  // "Sunday, March 09, 2008"            LongDate
String.Format("{0:f}", dt);  // "Sunday, March 09, 2008 4:05 PM"    LongDate+ShortTime
String.Format("{0:F}", dt);  // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime
String.Format("{0:g}", dt);  // "3/9/2008 4:05 PM"                  ShortDate+ShortTime
String.Format("{0:G}", dt);  // "3/9/2008 4:05:07 PM"               ShortDate+LongTime
String.Format("{0:m}", dt);  // "March 09"                          MonthDay
String.Format("{0:y}", dt);  // "March, 2008"                       YearMonth
String.Format("{0:r}", dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"     RFC1123
String.Format("{0:s}", dt);  // "2008-03-09T16:05:07"               SortableDateTime
String.Format("{0:u}", dt);  // "2008-03-09 16:05:07Z"              UniversalSortableDateTime

/*
Specifier   DateTimeFormatInfo property     Pattern value (for en-US culture)
    t           ShortTimePattern                    h:mm tt
    d           ShortDatePattern                    M/d/yyyy
    T           LongTimePattern                     h:mm:ss tt
    D           LongDatePattern                     dddd, MMMM dd, yyyy
    f           (combination of D and t)            dddd, MMMM dd, yyyy h:mm tt
    F           FullDateTimePattern                 dddd, MMMM dd, yyyy h:mm:ss tt
    g           (combination of d and t)            M/d/yyyy h:mm tt
    G           (combination of d and T)            M/d/yyyy h:mm:ss tt
    m, M        MonthDayPattern                     MMMM dd
    y, Y        YearMonthPattern                    MMMM, yyyy
    r, R        RFC1123Pattern                      ddd, dd MMM yyyy HH':'mm':'ss 'GMT' (*)
    s           SortableDateTi­mePattern             yyyy'-'MM'-'dd'T'HH':'mm':'ss (*)
    u           UniversalSorta­bleDateTimePat­tern    yyyy'-'MM'-'dd HH':'mm':'ss'Z' (*)
                                                    (*) = culture independent   
*/

Cập nhật bằng định dạng nội suy chuỗi c # 6

// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

$"{dt:y yy yyy yyyy}";  // "8 08 008 2008"   year
$"{dt:M MM MMM MMMM}";  // "3 03 Mar March"  month
$"{dt:d dd ddd dddd}";  // "9 09 Sun Sunday" day
$"{dt:h hh H HH}";      // "4 04 16 16"      hour 12/24
$"{dt:m mm}";           // "5 05"            minute
$"{dt:s ss}";           // "7 07"            second
$"{dt:f ff fff ffff}";  // "1 12 123 1230"   sec.fraction
$"{dt:F FF FFF FFFF}";  // "1 12 123 123"    without zeroes
$"{dt:t tt}";           // "P PM"            A.M. or P.M.
$"{dt:z zz zzz}";       // "-6 -06 -06:00"   time zone

// month/day numbers without/with leading zeroes
$"{dt:M/d/yyyy}";    // "3/9/2008"
$"{dt:MM/dd/yyyy}";  // "03/09/2008"

// day/month names
$"{dt:ddd, MMM d, yyyy}";    // "Sun, Mar 9, 2008"
$"{dt:dddd, MMMM d, yyyy}";  // "Sunday, March 9, 2008"

// two/four digit year
$"{dt:MM/dd/yy}";    // "03/09/08"
$"{dt:MM/dd/yyyy}";  // "03/09/2008"

Tôi muốn định dạng này: yyyyMMddHHmm[+-]ZZzztrong đó phần [+ -] ZZzz là múi giờ (số giờ được thêm hoặc trừ từ ngày GMT)
Kiquenet

zzz-06: 00 , tôi muốn-0600
Kiquenet

2
@Kiquenet bạn đã thử .Replace(":", "") $"{dt:yyyyMMddHHmmzzz}".Replace(":", "")làm một công việc xung quanh
Nerdroid

Một thay thế là dt.ToString("...");, nơi thay thế "..."bằng một định dạng ở trên, ví dụ. "yyyy-MM-dd".
ToolmakerSteve

247

Bạn thực tế đã viết định dạng cho mình.

yourdate.ToString("yyyyMMddHHmmss")

  • MM = hai chữ số tháng
  • mm = hai phút chữ số
  • HH = hai chữ số giờ, đồng hồ 24 giờ
  • hh = hai chữ số giờ, đồng hồ 12 giờ

Mọi thứ khác nên tự giải thích.


92
"fff" sẽ cung cấp cho mili giây để bạn có thể sử dụng "yyyyMMddHHmmssfff" để cung cấp một chuỗi xuống đến mili giây.
Jeff Widmer

Phần nào cho múi giờ (số giờ được thêm hoặc trừ từ ngày GMT)?
Kiquenet

129

Bạn chỉ cần cẩn thận giữa tháng (MM) và phút (mm):

DateTime dt = DateTime.Now; // Or whatever
string s = dt.ToString("yyyyMMddHHmmss");

(Cũng lưu ý rằng HH là đồng hồ 24 giờ, trong khi hh sẽ là đồng hồ 12 giờ, thường kết hợp với t hoặc tt cho người chỉ định sáng / chiều.)

Nếu bạn muốn làm điều này như một phần của chuỗi định dạng tổng hợp, bạn sẽ sử dụng:

string s = string.Format("The date/time is: {0:yyyyMMddHHmmss}", dt);

Để biết thêm thông tin, hãy xem trang MSDN về các định dạng ngày và giờ tùy chỉnh .


là nó có thể: now.ToString("yyyyMMdd_HHmmss")? Ý tôi là có thể kết hợp với các nhân vật khác, đúng không?
DanielV

1
@DanielV: Vâng, nhưng tôi sẽ trích dẫn các ký tự theo nghĩa đen (với dấu nháy đơn).
Jon Skeet

26

Bạn có thể sử dụng chuỗi định dạng tùy chỉnh:

DateTime d = DateTime.Now;
string dateString = d.ToString("yyyyMMddHHmmss");

Thay thế "hh" cho "HH" nếu bạn không muốn thời gian 24 giờ.


21

Nếu bạn sử dụng ReSharper, hãy nhận trợ giúp với ':' (xem hình ảnh)

Intellisense


Bạn nhận được điều tương tự với năm 2013 (và có thể là trước đó) với ReSharper.
Wai Ha Lee

18
DateTime.Now.ToString("yyyyMMddHHmmss");

nếu bạn chỉ muốn nó được hiển thị dưới dạng một chuỗi


16

Trong .Net Standard 2bạn có thể định dạng DateTimenhư belows:

DateTime dt = DateTime.Now;
CultureInfo iv = CultureInfo.InvariantCulture;

// Default formats
// D - long date           Tuesday, 24 April 2018
// d - short date          04/24/2018
// F - full date long      Tuesday, 24 April 2018 06:30:00
// f - full date short     Tuesday, 24 April 2018 06:30
// G - general long        04/24/2018 06:30:00
// g - general short       04/24/2018 06:30
// U - universal full      Tuesday, 24 April 2018 06:30:00
// u - universal sortable  2018-04-24 06:30:00
// s - sortable            2018-04-24T06:30:00
// T - long time           06:30:00
// t - short time          06:30
// O - ISO 8601            2018-04-24T06:30:00.0000000
// R - RFC 1123            Tue, 24 Apr 2018 06:30:00 GMT           
// M - month               April 24
// Y - year month          2018 April
Console.WriteLine(dt.ToString("D", iv));

// Custom formats
// M/d/yy                  4/8/18
// MM/dd/yyyy              04/08/2018
// yy-MM-dd                08-04-18
// yy-MMM-dd ddd           08-Apr-18 Sun
// yyyy-M-d dddd           2018-4-8 Sunday
// yyyy MMMM dd            2018 April 08      
// h:mm:ss tt zzz          4:03:05 PM -03
// HH:m:s tt zzz           16:03:05 -03:00
// hh:mm:ss t z            04:03:05 P -03
// HH:mm:ss tt zz          16:03:05 PM -03      
Console.WriteLine(dt.ToString("M/d/yy", iv));


8

Tôi ngạc nhiên không ai có một liên kết cho việc này. mọi định dạng có thể được tạo bằng các hướng dẫn ở đây:

Chuỗi định dạng ngày và giờ tùy chỉnh

Ví dụ cụ thể của bạn (Như những người khác đã chỉ ra) sử dụng một cái gì đó như

my_format="yyyyMMddHHmmss";
DateTime.Now.ToString(my_format);

Trong đó my_format có thể là bất kỳ tổ hợp chuỗi nào của y, M, H, m, s, f, F và hơn thế nữa! Kiểm tra các liên kết.


1
Jon Skeet bao gồm liên kết đó trong câu trả lời của mình ( stackoverflow.com/a/3025377/12484 ).
Jon Schneider

5

Lấy ngày làm DateTimeđối tượng thay vì Chuỗi. Sau đó, bạn có thể định dạng nó như bạn muốn.

  • MM / dd / yyyy 08/22/2006
  • dddd, dd MMMM yyyy Thứ ba, 22 tháng 8 năm 2006
  • dddd, dd MMMM yyyy HH: mm Thứ ba, 22 tháng 8, 2006 06:30
  • dddd, dd MMMM yyyy hh: mm tt Thứ ba, 22 tháng 8, 2006 06:30 AM
  • dddd, dd MMMM yyyy H: mm Thứ ba, 22 tháng 8, 2006 6:30
  • dddd, dd MMMM yyyy h: mm tt Thứ ba, 22 tháng 8, 2006 6:30 AM
  • dddd, dd MMMM yyyy HH: mm: ss Thứ ba, 22 tháng 8, 2006 06:30:07
  • MM / dd / yyyy HH: mm 08/22/2006 06:30
  • MM / dd / yyyy hh: mm tt 08/22/2006 06:30 AM
  • MM / dd / yyyy H: mm 08/22/2006 6:30
  • MM / dd / yyyy h: mm tt 08/22/2006 6:30 SA
  • MM / dd / yyyy HH: mm: ss 08/22/2006 06:30:07

Nhấn vào đây để biết thêm các mẫu



3

Phương pháp dễ dàng, Kiểm soát hoàn toàn 'từ loại' và 'đến loại' và chỉ cần nhớ mã này cho các lần đúc trong tương lai

DateTime.ParseExact(InputDate, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"));

2

Nó không phải là vấn đề lớn. bạn có thể chỉ cần đặt như thế này

WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd-HH:mm:ss")}");

Xin lỗi ở đây vì tôi đã sử dụng $ dành cho Nội suy chuỗi.


0

Rất có thể là bất kỳ câu trả lời nào ở trên sẽ không giải quyết được vấn đề của bạn. Tuy nhiên, tôi đang chia sẻ phương pháp của mình, nó luôn hoạt động với tôi cho các định dạng khác nhau của thời gian.

//Definition   
     public static DateTime ConvertPlainStringToDatetime(string Date, string inputFormat, string  outputFormat)
            {
                DateTime date;
                CultureInfo enUS = new CultureInfo("en-US");
                DateTime.TryParseExact(Date, inputFormat, enUS,
                                    DateTimeStyles.AdjustToUniversal, out date);

                string formatedDateTime = date.ToString(outputFormat);
                return Convert.ToDateTime(formatedDateTime);   
            }
//Calling

    string oFormat = "yyyy-MM-dd HH:mm:ss";
    DateTime requiredDT = ConvertPlainStringToDatetime("20190205","yyyyMMddHHmmss", oFormat  );
    DateTime requiredDT = ConvertPlainStringToDatetime("20190508-12:46:42","yyyyMMdd-HH:mm:ss", oFormat);

-1

Sau khi dành nhiều giờ cho tìm kiếm của Google, tôi đã tìm thấy giải pháp bên dưới vì khi tôi đưa ra thời gian ngày cục bộ, không có ngoại lệ trong khi từ máy chủ khác, có Lỗi ......... Ngày không ở định dạng phù hợp .. Trước khi lưu / tìm kiếm Thời gian ngày của hộp văn bản trong C #, chỉ cần kiểm tra Văn hóa Serer bên ngoài giống như văn hóa máy chủ cơ sở dữ liệu .. Ex cả hai phải là "en-US" hoặc phải là cả hai "en-GB" bên dưới snap snap.

nhập mô tả hình ảnh ở đây

Ngay cả với định dạng ngày khác nhau như (dd / mm / yyyy) hoặc (yyyy / mm / dd), nó sẽ lưu hoặc tìm kiếm chính xác.


Phải viết hoa những m - M là Tháng, m là phút. Những thứ này sẽ cho bạn ví dụ 2017/51/10
Chris Moschini

Nó chỉ hiển thị định dạng ngày có thể là ngày / tháng / năm hoặc năm / tháng / ngày .......... nó sẽ tìm kiếm bất chấp sự khác biệt về văn hóa ... đừng nhầm lẫn với thời gian ....... ......... định dạng này có thể được đặt trên calander dateTimePicker ........
Abdul Khaliq
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.