DateTime belirli bir dize biçimine / biçiminden nasıl dönüştürülür (her iki şekilde de, örneğin verilen Biçim “yyyyMMdd” dir)?


132

Dize biçiminde olan bir tarih saati dönüştürmede sorun yaşıyorum, ancak "yyyyMMdd"biçimi kullanarak onu dönüştüremiyorum .

Benim kodum:

string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");

for (int i = 0; i < tpocinfo.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
            claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
            claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
            claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
        }
        break;

Şu anda tarih saat dizesi hangi biçimde?
Falle1234

11
Ve kod pasajınızın soru ile alaka düzeyi nedir?
Darin Dimitrov

2
Ben biraz belirsizim; bir tarihin dize gösterimi veya DateTime nesnesi ile mi çalışıyorsunuz? Bunun bir DateTime nesnesi olduğunu varsayarsak, sadece çağırabilirsiniz obj.ToString("yyyyMMdd");
Nathan Taylor

Aslında TPOCDate2 zaten bir değişken ve ben sadece tpoc2 [0] 'daki öğeleri yyyyMMdd formatına dönüştürmek istiyorum. Umarım bu sorunuzu yanıtlar
Ashutosh

Bir yerde mi sıkıştın?
Dariusz Woźniak

Yanıtlar:


224

Bir dizede "ggAAyyyy" biçiminde bir tarihiniz varsa ve bunu "yyyyMMdd" biçimine dönüştürmek istiyorsanız, şunu yapabilirsiniz:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");

4
Kodunuza takılı kaldınız, bu iyi çalıştı DateTime. TryParse (stringValue, out outputInDateTime);
DJ

64

DateTime ayrıştırılıyor:

Bir DateTime'ı ayrıştırmak için aşağıdaki yöntemlerden birini kullanın:

Alternatif olarak, deneme-ayrıştırma kalıbını kullanabilirsiniz:

Özel Tarih ve Saat Biçimi Dizeleri hakkında daha fazla bilgi edinin .

DateTime'ı bir dizeye dönüştürme:

"YyyyMMdd" biçiminde bir dize olarak bir DateTime döndürmek için, ToStringyöntemi kullanabilirsiniz .

  • Kod parçacığı örneği: string date = DateTime.ToString("yyyyMMdd");
  • Not üst kasalı M 'in ay bakın ve kasalı düşük değerler m ' dakikaya s.

Senin durumun:

Sizin durumunuzda, tarihin farklı formatta olduğu veya eksik olduğu durumlarda senaryoyu işlemek istemediğinizi varsayarsak, aşağıdakileri kullanmak en uygunudur ParseExact:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);

7
Bu eski bir konudur, ancak arama yapanlar için yukarıdaki "kültüre özgü biçim" bağlantısı artık ölü bir bağlantıdır. İşte güncel ve bilgilendirici Özel Tarih ve Saat Biçimi Dizeleri

40

Dizenizi aşağıdaki DateTimegibi bir değere dönüştürebilirsiniz :

DateTime date = DateTime.Parse(something);

Bir DateTimedeğeri şu şekilde biçimlendirilmiş bir dizeye dönüştürebilirsiniz :

date.ToString("yyyyMMdd");

11

Yyyy-AA-gg tarih biçimine dizge: Örnek:

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   

10

DATE'in de TIME ile dize olmasını istiyorsanız . Bunu yapabiliriz:

    //Date and Time is taking as current system Date-Time    
    DateTime.Now.ToString("yyyyMMdd-HHmmss");

7
dakika küçük "m" olmalı!? "yyyyMMdd-HHmmss"
CeOnSql

6

DateTime.TryParseExact()Belirli bir tarih formatıyla eşleştirmek istiyorsanız kullanın

   string format = "yyyyMMdd"; 
    DateTime dateTime;
    DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                             DateTimeStyles.None, out dateTime);

5

Bunun DateTime.TryParse()yerine kullanabilirsiniz DateTime.Parse().
İle TryParse()başarılı oldu ve birlikte eğer bir dönüş değeri Parse()bir istisna işlemek zorunda


5

Sadece bu şekilde yapın.

string yourFormat = DateTime.Now.ToString("yyyyMMdd");

Mutlu kodlamalar :)


3

hayır yyyy / aa / gg içeren bir dizge ve yyyyMMdd biçiminde ona ihtiyacım var

Bir dizeden yalnızca eğik çizgileri kaldırmanız gerekiyorsa, onları değiştirmez misiniz?

Misal:

myDateString = "2013/03/28";
myDateString = myDateString.Replace("/", "");

myDateString artık "20130328" olmalıdır.

Daha az aşırılık :)


3

Biçime dönüştürmenin basit yolu

 DateTime.Now.ToString("yyyyMMdd");

2

Özellik adlarına göre, bir dizeyi atamaya göre tarihe dönüştürmeye çalışıyormuşsunuz gibi görünür:

claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();

Muhtemelen geçerli kullanıcı arabirimi kültüründen kaynaklanmaktadır ve bu nedenle atandığında tarih dizesini doğru şekilde yorumlayamaz.


hayır yyyy / aa / gg içeren bir dizge ve yyyyMMdd biçiminde ihtiyacım var
Ashutosh

ve talep edenAuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString ("yyyyMMdd") yaparken; bazı yapı hataları veriyor. 'String.ToString (System.IFormatProvider)' için en iyi aşırı yüklenmiş yöntem eşleşmesinde bazı geçersiz tartışmalar var
Ashutosh

@Matt - gerçekten mi? Bir sekme eklemek için yanıt olarak işaretlenmemiş 4+ yıllık bir yanıtı mı düzenlediniz? Bu ciddi, kötü bir OKB vakası var.
Peter

1

C # 6'dan:

var dateTimeUtcAsString = $"{DateTime.UtcNow:o}";

Sonuç şöyle olacaktır: "2019-01-15T11: 46: 33.2752667Z"


0

Bu cevabı ararken de karşılaştığım daha basit bir yol;

string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));

Bir değerim olmasına ne dersin DateTime? Beğen DateTime newDate = DateTime.Parse(Session["date"].ToString());?
WTFZane

0

Bu kodları deneyebilirsiniz

claimantAuxillaryRecord.TPOCDate2  = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd"); 

Veya

claimantAuxillaryRecord.TPOCDate2 = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd hh:mm:ss"); 

1
Tanrı aşkına (efendimiz kurtarıcımız Harambe), asla Convert.ToDateTime'ı kullanmayın ... Bu şey çok yavaş (~ 100ms)! Sadece ParseExact veya TryParse kullanın - waaaaay daha hızlı !!!
Koshera
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.