C # DateTime ke format "YYYYMMDDHHMMSS"


621

Saya ingin mengonversi format C # DateTime ke format "YYYYMMDDHHMMSS". Tetapi saya tidak menemukan metode bawaan untuk mendapatkan format ini? Ada komentar?

Jawaban:


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

35
apakah hanya saya yang berpikir bahwa gila memiliki M besar selama berbulan-bulan kemudian besar H selama berjam-jam?
Nick

69
m = menit / M = bulan, h = 12 jam, H = 24 jam. Saya menduga seseorang mulai dengan waktu dan mengatakan hms = jam menit detik, kemudian H menjadi 24 jam dan kemudian mereka berkencan dan kehabisan surat unik jadi pergi dengan case. Hanya satu dari banyak hal itu.
Douglas Anderson

2
Bagaimana Anda mengurai itu kembali menggunakan DateTime.Parse()?
Uang Besar

12
@BigMoney Anda akan menggunakan DateTime.ParseExact: var now = DateTime.ParseExact (stringVersion, "YYYYMMDDHHMMSS", CultureInfo.InvariantCulture);
Jim Lamb

4
@BigMoney Saat parsing, formatini juga peka huruf besar-kecil, yaituDateTime.ParseExact(stringValue, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
Nigel Touch

577

Situs ini memiliki contoh besar memeriksanya

// 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"

Pemformatan DateTime Standar

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   
*/

Perbarui menggunakan format interpolasi string 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"

Saya ingin format ini: di yyyyMMddHHmm[+-]ZZzzmana bagian [+ -] ZZzz adalah zona waktu (jumlah jam yang akan ditambahkan atau dikurangi dari tanggal GMT)
Kiquenet

zzzadalah -06: 00 , saya ingin-0600
Kiquenet

2
@Kiquenet Anda mencoba .Replace(":", "") $"{dt:yyyyMMddHHmmzzz}".Replace(":", "")sebagai pekerjaan sekitar
Nerdroid

Alternatifnya adalah dt.ToString("...");, di mana ganti "..."dengan format di atas, mis. "yyyy-MM-dd".
ToolmakerSteve

247

Anda praktis telah menulis formatnya sendiri.

yourdate.ToString("yyyyMMddHHmmss")

  • MM = dua digit bulan
  • mm = dua digit menit
  • HH = jam dua digit, jam 24 jam
  • jj = jam dua digit, jam 12 jam

Segala sesuatu yang lain harus jelas.


92
"fff" akan memberikan milidetik sehingga Anda dapat menggunakan "yyyyMMddHHmmssfff" untuk memberikan string ke milidetik.
Jeff Widmer

Bagian mana dari zona waktu (jumlah jam yang akan ditambahkan atau dikurangi dari tanggal GMT)?
Kiquenet

129

Anda harus berhati-hati antara bulan (MM) dan menit (mm):

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

(Perhatikan juga bahwa HH adalah jam 24 jam, sedangkan jam akan menjadi jam 12 jam, biasanya dalam hubungannya dengan t atau tt untuk perancang pagi / malam.)

Jika Anda ingin melakukan ini sebagai bagian dari string format komposit, Anda akan menggunakan:

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

Untuk informasi lebih lanjut, lihat halaman MSDN pada format tanggal dan waktu khusus .


apakah mungkin untuk now.ToString("yyyyMMdd_HHmmss"):? Maksud saya, mungkin digabungkan dengan karakter lain, benar?
DanielV

1
@DanielV: Ya, tapi saya akan mengutip karakter literal (dengan apostrof).
Jon Skeet

26

Anda dapat menggunakan string format khusus:

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

Ganti "hh" untuk "HH" jika Anda tidak ingin waktu jam 24 jam.


21

Jika Anda menggunakan ReSharper, dapatkan bantuan dengan ':' (lihat gambar)

Intellisense


Anda mendapatkan hal yang sama dengan 2013 (dan mungkin sebelumnya) dengan ReSharper.
Wai Ha Lee

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

jika Anda hanya ingin itu ditampilkan sebagai string


16

Dalam .Net Standard 2Anda dapat memformat DateTimeseperti 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

Saya terkejut tidak ada yang memiliki tautan untuk ini. format apa pun dapat dibuat menggunakan pedoman di sini:

String Format Tanggal dan Waktu Kustom

Untuk contoh spesifik Anda (Seperti yang telah ditunjukkan orang lain) gunakan sesuatu seperti

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

Di mana my_format dapat berupa kombinasi string apa pun dari y, M, H, m, s, f, F, dan lainnya! Lihat tautannya.


1
Jon Skeet memasukkan tautan itu dalam jawabannya ( stackoverflow.com/a/3025377/12484 ).
Jon Schneider

5

Dapatkan tanggal sebagai DateTimeobjek, bukan String. Kemudian Anda dapat memformatnya sesuai keinginan.

  • MM / dd / yyyy 22/08/2006
  • dddd, dd MMMM yyyy Selasa, 22 Agustus 2006
  • dddd, dd MMMM yyyy HH: mm Selasa, 22 Agustus 2006 06:30
  • dddd, dd MMMM yyyy jj: mm tt Selasa, 22 Agustus 2006 06:30 pagi
  • dddd, dd MMMM yyyy H: mm Selasa, 22 Agustus 2006 6:30
  • dddd, dd MMMM yyyy h: mm tt Selasa, 22 Agustus 2006 6:30 pagi
  • dddd, dd MMMM yyyy HH: mm: ss Selasa, 22 Agustus 2006 06:30:07
  • MM / hh / tttt HH: mm 08/22/2006 06:30
  • MM / hh / tttt hh: mm tt 08/22/2006 06:30 AM
  • MM / hh / tttt H: mm 08/22/2006 6:30
  • MM / dd / tttt jam: mm tt 08/22/2006 6:30 pagi
  • MM / dd / yyyy HH: mm: ss 08/22/2006 06:30:07

Klik di sini untuk lebih banyak pola



3

Metode yang mudah, Kontrol penuh atas 'dari tipe' dan 'untuk mengetik', dan hanya perlu mengingat kode ini untuk casting yang akan datang

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

2

Itu bukan masalah besar. Anda cukup menempatkan seperti ini

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

Maaf di sini karena saya menggunakan $ yang untuk Interpolasi string.


0

Peluangnya tipis karena jawaban di atas tidak akan menyelesaikan masalah Anda. Meskipun demikian, saya membagikan metode saya yang selalu bekerja untuk saya untuk format data yang berbeda.

//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

Setelah menghabiskan banyak waktu di pencarian Google, saya menemukan solusi di bawah ini ketika saya secara lokal memberikan waktu kencan, tidak terkecuali dari server lain, ada Kesalahan ......... Tanggal tidak dalam format yang tepat .. Sebelum menyimpan / mencari waktu tanggal kotak teks di C #, cukup centang baik Budaya Serer luar sama seperti budaya server database .. Mantan keduanya harus "en-US" atau harus keduanya "en-GB" asp di bawah snap shot.

masukkan deskripsi gambar di sini

Bahkan dengan format tanggal yang berbeda seperti (dd / mm / yyyy) atau (yyyy / mm / dd), itu akan menyimpan atau mencari secara akurat.


Harus menggunakan huruf kapital untuk huruf m - M adalah Bulan, m adalah menit. Ini akan memberi Anda misalnya 2017/51/10
Chris Moschini

Hanya menampilkan format tanggal mungkin hari / bulan / tahun atau tahun / bulan / hari .......... itu akan mencari meskipun ada perbedaan budaya ... jangan bingung dengan waktu ....... ......... format ini dapat diatur pada dateTimePicker calander ........
Abdul Khaliq
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.