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;
Ashutosh
sumber
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");
Falle1234
sumber
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);
Dariusz Woźniak
sumber
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");
Slaks
sumber
11

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

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   
NSiva
sumber
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");
Anish
sumber
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);
Mudassir Hasan
sumber
5

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

Peter
sumber
5

Cukup lakukan dengan cara ini.

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

Selamat coding :)

Prashant-Systematix
sumber
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 :)

SergioMSCosta
sumber
3

Ini cara sederhana untuk mengonversi ke format

 DateTime.Now.ToString("yyyyMMdd");
manoj kumar
sumber
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.

Peter
sumber
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"

ben alfasi
sumber
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"));
Enrique Ortiz Sánchez
sumber
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"); 
A. Zalonis
sumber
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