C # DateTime - “YYYYMMDDHHMMSS” biçimi


621

Bir C # DateTime "YYYYMMDDHHMMSS" biçimine dönüştürmek istiyorum. Ama bu biçimi almak için yerleşik bir yöntem bulamıyorum? Herhangi bir yorum?

Yanıtlar:


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

35
aylar boyunca büyük M'nin saatlerce büyük H'lere sahip olmasının fındık olduğunu düşünen sadece ben miyim?
Nick

69
m = dakika / M = ay, h = 12 saat, H = 24 saat. Birinin zamanla başladığından şüpheleniyorum ve hms = saat dakika saniye dedi, sonra H 24 saat oldu ve sonra bugüne kadar var ve benzersiz mektuplar tükendi, bu yüzden davaya gitti. Bunlardan sadece biri.
Douglas Anderson

2
Bunu kullanarak nasıl ayrıştırırsınız DateTime.Parse()?
Büyük Para

12
@BigMoney DateTime.ParseExact kullanırsınız: var now = DateTime.ParseExact (stringVersion, "YYYYMMDDHHMMSS", CultureInfo.InvariantCulture);
Jim Lamb

4
@BigMoney Ayrıştırma yaparken, bu formatda büyük / küçük harfe duyarlıdır, yaniDateTime.ParseExact(stringValue, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
Nigel Touch

577

Bu site harika örnekler vardır bunu kontrol

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

Standart DateTime Biçimlendirme

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 # 6 dize enterpolasyon formatını kullanarak güncelleme

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

Bu biçimi istiyorum: yyyyMMddHHmm[+-]ZZzzBurada [+ -] ZZzz kısmı saat dilimi (GMT tarihinden eklenecek veya çıkarılacak saat sayısı)
Kiquenet

zzzise -06: 00 , ben istiyorum-0600
Kiquenet

2
@Kiquenet .Replace(":", "") $"{dt:yyyyMMddHHmmzzz}".Replace(":", "")bir çalışma olarak denediniz mi
Nerdroid

Bir alternatif, yukarıdaki formatla dt.ToString("...");değiştirilir "...", örn. "yyyy-MM-dd".
ToolmakerSteve

247

Biçimi pratik olarak kendiniz yazdınız.

yourdate.ToString("yyyyMMddHHmmss")

  • MM = iki basamaklı ay
  • mm = iki basamaklı dakika
  • SS = iki basamaklı saat, 24 saat
  • ss = iki basamaklı saat, 12 saat

Diğer her şey açıklayıcı olmalıdır.


92
"fff" milisaniye verir, böylece milisaniyeye bir dize vermek için "yyyyMMddHHmmssfff" kullanabilirsiniz.
Jeff Widmer

Saat dilimi için hangisi (GMT tarihinden itibaren eklenecek veya çıkarılacak saat sayısı)?
Kiquenet

129

Aylar (MM) ve dakikalar (mm) arasında dikkatli olmanız gerekir:

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

(Ayrıca HH'nin 24 saatlik bir saat olduğunu, buna karşılık hh'nin 12 saatlik bir saat olacağını unutmayın.

Bunu bileşik biçim dizesinin bir parçası olarak yapmak istiyorsanız şunu kullanırsınız:

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

Daha fazla bilgi için özel tarih ve saat biçimleri hakkındaki MSDN sayfasına bakın .


mümkün now.ToString("yyyyMMdd_HHmmss")mü? Yani diğer karakterlerle birleştirmek mümkün, değil mi?
DanielV

1
@DanielV: Evet, ama gerçek karakterleri (kesme işaretleriyle) alıntılarım.
Jon Skeet

26

Özel bir biçim dizesi kullanabilirsiniz:

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

24 saat saatini istemiyorsanız "HH" yerine "hh" yazın.


21

ReSharper kullanıyorsanız, ':' konusunda yardım alın (resme bakın)

iyileştirmek


Aynı şeyi 2013'te (ve muhtemelen daha önce) ReSharper ile elde edersiniz.
Wai Ha Lee

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

sadece dize olarak görüntülenmesini istiyorsanız


16

Aşağıdaki gibi .Net Standard 2biçimlendirebilirsiniz DateTime:

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

Kimsenin bunun için bir bağlantısı olmadığına şaşırdım. buradaki yönergeler kullanılarak herhangi bir biçim oluşturulabilir:

Özel Tarih ve Saat Biçimi Dizeleri

Özel örneğiniz için (Diğerlerinin belirttiği gibi)

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

My_format, y, M, H, m, s, f, F ve daha fazlasının dize kombinasyonu olabilir! Bağlantıyı kontrol edin.


1
Jon Skeet bu bağlantıyı cevabına dahil etti ( stackoverflow.com/a/3025377/12484 ).
Jon Schneider

5

Tarihi DateTimeString yerine nesne olarak alın . Sonra istediğiniz gibi biçimlendirebilirsiniz.

  • AA / gg / yyyy 08/22/2006
  • dddd, gg MMMM yyyy 22 Ağustos 2006 Salı
  • gg.aa, gg MMMM yyyy SS: mm 22 Ağustos 2006 Salı 06:30
  • gg.aa, gg MMMM yyyy ss: dd tt 22 Ağustos 2006 Salı 06:30
  • gg.aa, gg MMMM yyyy Y: mm 22 Ağustos 2006 Salı 6:30
  • gg.aa, gg MMMM yyyy s: dd tt 22 Ağustos 2006 Salı 06:30
  • gg.aa, gg MMMM yyyy SS: dd: ss 22 Ağustos 2006 Salı 06:30:07
  • AA / gg / yyyy SS: dd 08/22/2006 06:30
  • AA / gg / yyyy ss: dd tt 08/22/2006 06:30
  • AA / gg / yyyy Y: mm 08/22/2006 6:30
  • AA / gg / yyyy sa: mm tt 08/22/2006 06:30
  • AA / gg / yyyy SS: dd: ss 08/22/2006 06:30:07

Daha fazla desen için buraya tıklayın



3

Kolay bir Yöntem, 'türden' ve 'türden' üzerinde tam kontrol ve yalnızca gelecekteki dökümler için bu kodu hatırlaması gerekir

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

2

O kadar da önemli bir mesele değil. basitçe böyle koyabilirsin

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

Affedersin burada ben string Interpolation için olan $ kullandım.


0

Yukarıdaki cevaplardan herhangi birinin sorununuzu çözmemesi ihtimali düşüktür. Yine de, farklı tarihler için her zaman benim için çalışan yöntemimi paylaşıyorum.

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

Google aramada çok fazla saat geçirdikten sonra, yerel olarak tarih saatini verdiğimde, diğer sunucudan istisna olmadığında aşağıdaki çözümü buldum, Hata ......... Tarih düzgün biçimde değil .. Metin kutusu tarih zaman C # kaydetmeden / arama önce, sadece dış Serer Kültür veritabanı sunucu kültürü ile aynı kontrol .. Ex her ikisi de "en-US" olmalıdır veya snap shot altında hem "en-GB" asp olmalıdır.

resim açıklamasını buraya girin

(Gg / aa / yyyy) veya (yyyy / aa / gg) gibi farklı tarih biçimleriyle bile, kaydeder veya doğru şekilde arama yapar.


Bu m 'ler büyük harfle yazılmalıdır - M Ay, m dakikadır. Bunlar size örneğin 2017/51/10
Chris

Sadece tarih biçimini gösteren gün / ay / yıl veya yıl / ay / gün olabilir .......... kültür farkına rağmen arayacaktır ... zamanla karıştırmayın ....... ......... bu biçim dateTimePicker calander tarihinde ayarlanabilir ........
Abdul Khaliq
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.