Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การแสดงปีในรูปแบบต่างๆ ด้วย DateTime.ToString() ใน C#

เมธอด DateTime.ToString() รองรับรูปแบบการแสดงปี (Year format) หลายแบบผ่าน Format String ทำให้สามารถแสดงปีเป็น 2 หลัก 3 หลัก 4 หลัก หรือมากกว่านั้นได้

รูปแบบปีที่รองรับ

Format Stringชื่อตัวอย่าง (ปี 2024)คำอธิบาย
yy2-digit year24ปี 2 หลักสุดท้าย
yyy3-digit year2024ปี 3 หลักขึ้นไป (ไม่ตัดศูนย์นำหน้า)
yyyy4-digit year2024ปี 4 หลัก (มาตรฐาน)
yyyyy5-digit year02024ปี 5 หลัก (มีศูนย์นำหน้า)

โค้ดตัวอย่างสมบูรณ์

using System;

public class Demo
{
    public static void Main()
    {
        DateTime dt = DateTime.Now;
        
        Console.WriteLine($"วันนี้: {DateTime.Today:d}");
        Console.WriteLine("การแสดงปีในรูปแบบต่างๆ:");
        Console.WriteLine($"  yy   : {dt.ToString("yy")}");   // 2 หลัก
        Console.WriteLine($"  yyy  : {dt.ToString("yyy")}");  // 3 หลักขึ้นไป
        Console.WriteLine($"  yyyy : {dt.ToString("yyyy")}"); // 4 หลัก (มาตรฐาน)
        Console.WriteLine($"  yyyyy: {dt.ToString("yyyyy")}"); // 5 หลัก
        
        // รูปแบบวันที่ไทยที่นิยม
        Console.WriteLine("\n--- รูปแบบวันที่ไทย ---");
        Console.WriteLine($"วันที่เต็ม: {dt.ToString("dd/MM/yyyy")}");     // 31/12/2024
        Console.WriteLine($"วันที่ไทย: {dt.ToString("d MMMM yyyy", new System.Globalization.CultureInfo("th-TH"))}");
        Console.WriteLine($"ปีพุทธศักราช: {dt.ToString("yyyy", new System.Globalization.CultureInfo("th-TH"))}"); // 2567
        
        // การใช้งานจริง
        Console.WriteLine("\n--- การใช้งานจริง ---");
        string shortDate = dt.ToString("yyMMdd"); // 241231 - ใช้สำหรับชื่อไฟล์
        string logFormat = dt.ToString("yyyy-MM-dd HH:mm:ss"); // 2024-12-31 23:59:59 - Log file
        Console.WriteLine($"ชื่อไฟล์วันที่: {shortDate}");
        Console.WriteLine($"Log timestamp: {logFormat}");
    }
}

ผลลัพธ์ (สมมติวันนี้ 31 ธันวาคม 2024)

วันนี้: 31/12/2024
การแสดงปีในรูปแบบต่างๆ:
  yy   : 24
  yyy  : 2024
  yyyy : 2024
  yyyyy: 02024

--- รูปแบบวันที่ไทย ---
วันที่เต็ม: 31/12/2024
วันที่ไทย: 31 ธันวาคม 2567
ปีพุทธศักราช: 2567

--- การใช้งานจริง ---
ชื่อไฟล์วันที่: 241231
Log timestamp: 2024-12-31 23:59:59

รูปแบบวันที่/เวลาที่นิยมใช้

yyyy-MM-dd
รูปแบบตัวอย่างใช้สำหรับ
2024-12-31ISO 8601, Database, API
dd/MM/yyyy31/12/2024ไทย, ยุโรป
MM/dd/yyyy12/31/2024สหรัฐอเมริกา
yyyyMMdd20241231ชื่อไฟล์, Sorting
yyyy-MM-ddTHH:mm:ss2024-12-31T23:59:59ISO 8601 DateTime
dd MMM yyyy31 ธ.ค. 2024รายงาน, UI

การใช้งานกับ CultureInfo

var thai = new System.Globalization.CultureInfo("th-TH");
var us = new System.Globalization.CultureInfo("en-US");

DateTime dt = new DateTime(2024, 12, 31);

Console.WriteLine(dt.ToString("d", thai)); // 31/12/2567 (ปีพุทธศักราช)
Console.WriteLine(dt.ToString("d", us));   // 12/31/2024 (ปีคริสต์ศักราช)

ข้อควรระวัง

  • yy อาจก่อให้เกิดปัญหา Y2K รุ่นใหม่ - ควรใช้ yyyy สำหรับข้อมูลสำคัญ
  • รูปแบบปีขึ้นอยู่กับ Calendar ของ CultureInfo (ไทยใช้พุทธศักราช)
  • ใช้ InvariantCulture สำหรับข้อมูลที่ต้อง Parse กลับ (Log, Config, API)