Bagaimana cara mengubah DateTime ke / dari format string tertentu (kedua cara, misalnya Format yang diberikan adalah "yyyyMMdd")?


132

Saya mengalami masalah dalam mengubah datetime yang dalam format string tetapi saya tidak dapat mengubahnya menggunakan "yyyyMMdd"format.

Kode saya adalah:

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;

Apa format string datetime saat ini?
Falle1234

11
Dan apa relevansi potongan kode Anda dengan pertanyaan?
Darin Dimitrov

2
Saya sedikit tidak jelas; Apakah Anda bekerja dengan representasi string tanggal, atau objek DateTime? Dengan asumsi itu adalah objek DateTime yang bisa Anda panggil obj.ToString("yyyyMMdd");
Nathan Taylor

Sebenarnya TPOCDate2 sudah menjadi variabel dan saya hanya ingin mengonversi elemnts dalam tpoc2 [0] menjadi dalam format yyyyMMdd. Semoga ini menjawab pertanyaan Anda
Ashutosh

Apakah Anda terjebak di suatu tempat?
Dariusz Woźniak

Jawaban:


224

jika Anda memiliki tanggal dalam sebuah string dengan format "ddMMyyyy" dan ingin mengubahnya menjadi "yyyyMMdd", Anda dapat melakukannya seperti ini:

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

4
Terjebak dengan kode Anda, ini bekerja dengan baik DateTime.TryParse (stringValue, out outputInDateTime);
DJ

64

Parsing DateTime:

Untuk mem-parsing DateTime, gunakan salah satu metode berikut:

Atau, Anda dapat menggunakan pola try-parse :

Baca lebih lanjut tentang String Format Tanggal dan Waktu Kustom .

Mengubah DateTime menjadi string:

Untuk mengembalikan DateTime sebagai string dalam format "yyyyMMdd", Anda dapat menggunakan ToStringmetode.

  • Contoh cuplikan kode: string date = DateTime.ToString("yyyyMMdd");
  • Catatan M huruf besar mengacu pada bulan dan huruf m lebih rendah untuk menit.

Kasus Anda:

Dalam kasus Anda, dengan asumsi Anda tidak ingin menangani skenario ketika tanggal berbeda format atau tidak ada, akan lebih mudah untuk menggunakan ParseExact:

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

7
Ini adalah topik lama, tetapi bagi mereka yang mencari, tautan di atas, "format khusus budaya" sekarang merupakan tautan mati. Berikut ini adalah String Kustom Tanggal dan Waktu Format

40

Anda dapat mengonversi string Anda ke DateTimenilai seperti ini:

DateTime date = DateTime.Parse(something);

Anda dapat mengonversi DateTimenilai menjadi string yang diformat seperti ini:

date.ToString("yyyyMMdd");

11

String ke format tanggal yyyy-MM-dd: Contoh:

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

10

Jika Anda ingin memiliki DATE sebagai string dengan TIME juga. Kita bisa melakukan ini:

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

7
menit seharusnya kecil "m"!? "yyyyMMdd-HHmmss"
CeOnSql

6

Gunakan DateTime.TryParseExact()jika Anda ingin mencocokkan dengan format tanggal tertentu

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

5

Anda bisa menggunakan DateTime.TryParse()bukanDateTime.Parse() .
Dengan TryParse()Anda memiliki nilai kembali jika berhasil dan dengan Parse()Anda harus menangani pengecualian


5

Cukup lakukan dengan cara ini.

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

Selamat coding :)


3

tidak ada string dengan yyyy / mm / dd dan saya membutuhkannya dalam format yyyyMMdd

Jika Anda hanya perlu menghapus garis miring dari sebuah string, bukankah Anda hanya menggantinya?

Contoh:

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

myDateString sekarang harus "20130328".

Kurang dari sebuah kerja keras :)


3

Ini cara sederhana untuk mengonversi ke format

 DateTime.Now.ToString("yyyyMMdd");

2

Berdasarkan nama properti, sepertinya Anda mencoba mengonversi string menjadi tanggal dengan penugasan:

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

Mungkin karena budaya UI saat ini dan oleh karena itu tidak dapat mengartikan string tanggal dengan benar ketika ditugaskan.


tidak ada string dengan yyyy / mm / dd dan saya membutuhkannya dalam format yyyyMMdd
Ashutosh

dan saat melakukan claimantAuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString ("yyyyMMdd"); itu memberikan beberapa kesalahan build. Metode overload terbaik untuk 'string.ToString (System.IFormatProvider)' memiliki beberapa argumen yang tidak valid
Ashutosh

@ Matt - benarkah? Anda mengedit respons 4+ tahun yang bahkan tidak ditandai sebagai jawaban untuk menambahkan tab? Itu adalah kasus OCD yang sangat buruk yang pernah Anda alami.
Peter

1

Dari C # 6:

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

Hasilnya adalah: "2019-01-15T11: 46: 33.2752667Z"


0

Cara yang lebih sederhana yang saya temui saat mencari jawaban ini juga;

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

Bagaimana kalau saya punya nilai untuk DateTime? Suka DateTime newDate = DateTime.Parse(Session["date"].ToString());?
WTFZane

0

Anda dapat mencoba kode-kode ini

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

Atau

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

1
Demi kasih tuhan (penyelamat tuan kami Harambe), jangan pernah gunakan Convert.ToDateTime ... Hal ini sangat lambat (~ 100 ms)! Cukup gunakan ParseExact atau TryParse - waaaaay lebih cepat !!!
Koshera
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.