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?

SARAVAN
sumber

Jawaban:

1061
DateTime.Now.ToString("yyyyMMddHHmmss"); // case sensitive
Jim Lamb
sumber
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"
Nerdroid
sumber
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.

Anthony Pegram
sumber
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 .

Jon Skeet
sumber
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.

Paul Kearney - hal
sumber
21

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

Intellisense

Georg
sumber
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

Pharabus
sumber
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));
Sina Lotfi
sumber
11
string date = DateTime.Now.ToString("dd-MMM-yy");  //05-Aug-13
Zohaib Iqbal
sumber
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.

joecop
sumber
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

Gihan Saranga Siriwardhana
sumber
3

menggunakan C # 6.0

$"Date-{DateTime.Now:yyyyMMddHHmmss}"
Waleed AK
sumber
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"));
Arun Prasad ES
sumber
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.

Sunil Dhappadhule
sumber
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);
Iqra.
sumber
-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.

Abdul Khaliq
sumber
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