| 
 | 
ขอบพระคุณอาจารย์ทองก้อนเป็นอย่างสูงครับ 
ผมขออนุญาตอาจารย์ทองก้อนแบ่งปันให้สมาชิกทุกท่านในอีกรูปแบบหนึ่ง 
นั่นก็คือการเรียกใช้คลาสใน .Net (CultureInfo Class & DateTimeFormatInfo Class) 
ทุกท่านสามารถดูเพิ่มเติมได้ที่ 
CultureInfo Class => https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo?view=netframework-4.7.2 
DateTimeFormatInfo Class => https://docs.microsoft.com/en-us/dotnet/api/system.globalization.datetimeformatinfo?view=netframework-4.7.2 
 
ช่วยจัดการเกี่ยวกับวันที่ , สกุลเงิน ให้อยู่ในรูปแบบสอดคล้องกับการตั้งค่า Region/Language 
(อธิบายให้เข้าใจง่ายขึ้นคือ เช่น ได้ค่าปี พ.ศ. มาจาก DatetimePicker = 2019 
กรณีที่ผมกำหนด CultureInfo = "th-TH" ผลลัพธ์ที่ได้คือ เลข พ.ศ. = 2562 
 
กรณีที่ผมกำหนด CultureInfo = "en-US" ผลลัพธ์ที่ได้คือ เลข ค.ศ. = 2019 เป็นต้น) 
 
ก่อนอื่น ต้อง Import Namespace: Imports System.Globalization เข้ามาใน Project เพื่ออ้างอิงการใช้ CultureInfo Class & DateTimeFormatInfo Class 
 
 
มาดูตัวอย่างโค้ดกันครับ 
วิธีที่ 1 : ผมจะเขียนให้มันยืดหยุ่น เพื่อกำหนด CultureInfo และ Date_Format ได้ 
เวลานำไปใช้งาน เช่น 
พ.ศ. 
FormatMyDate(วันที่,"th-TH","MM/dd/yyyy") ผลลัทธ์ที่ได้ คือ พ.ศ. => รูปแบบวันที่ เดือน/วัน/ปี (สำหรับ MS-Access) 
FormatMyDate(วันที่,"th-TH","dd/MM/yyyy") ผลลัทธ์ที่ได้ คือ พ.ศ. => รูปแบบวันที่ วัน/เดือน/ปี 
FormatMyDate(วันที่,"th-TH","dd-MM-yyyy") ผลลัทธ์ที่ได้ คือ พ.ศ. => รูปแบบวันที่ วัน-เดือน-ปี 
FormatMyDate(วันที่,"th-TH","yyyy-MM-dd") ผลลัทธ์ที่ได้ คือ พ.ศ. => รูปแบบวันที่ ปี-เดือน-วัน (สำหรับ SQL Server) 
FormatMyDate(วันที่,"th-TH","yyyy") ผลลัทธ์ที่ได้ คือ พ.ศ. => รูปแบบวันที่ ปี (เช่น 2562) 
 
 
ค.ศ. 
FormatMyDate(วันที่,"en-US","MM/dd/yyyy") ผลลัทธ์ที่ได้ คือ ค.ศ. => รูปแบบวันที่ เดือน/วัน/ปี (สำหรับ MS-Access) 
FormatMyDate(วันที่,"en-US","dd/MM/yyyy") ผลลัทธ์ที่ได้ คือ ค.ศ. => รูปแบบวันที่ วัน/เดือน/ปี 
FormatMyDate(วันที่,"en-US","dd-MM-yyyy") ผลลัทธ์ที่ได้ คือ ค.ศ. => รูปแบบวันที่ วัน-เดือน-ปี  
FormatMyDate(วันที่,"en-US","yyyy-MM-dd") ผลลัทธ์ที่ได้ คือ ค.ศ. => รูปแบบวันที่ ปี-เดือน-วัน (สำหรับ SQL Server) 
FormatMyDate(วันที่,"en-US","yyyy") ผลลัทธ์ที่ได้ คือ ค.ศ. => รูปแบบวันที่ ปี (เช่น 2019) 
 
 
 
หมายเหตุ หากต้องการใช้ร่วมกับ SQL Server ตรง Return ให้ลบ String "#" ตามที่ผมแต้มสีแดงออก  
Return "#" & MyDate.ToString(Date_Format, dtfi) & "#" 
- '// Return Date by CultureInfo Class(Ex. th-TH / en-US) and Date format(Ex. MM/dd/yyyy or dd/MM/yyyy)
 
 -     Function FormatMyDate(ByVal MyDate As Date, ByVal CultureInfo_Name As String, ByVal Date_Format As String) As String
 
  
-         Dim dtfi As DateTimeFormatInfo = CultureInfo.GetCultureInfo(CultureInfo_Name).DateTimeFormat
 
 -         Return "#" & MyDate.ToString(Date_Format, dtfi) & "#"
 
  
-     End Function
 
  คัดลอกไปที่คลิปบอร์ด 
 
วิธีที่ 2 : หากท่านใดต้องการใช้งานฟังก์ชั่นแบบตรง ๆ ไม่ต้องการกำหนดค่าพารามิเตอร์จะเขียนแบบนี้ 
เช่น ต้องการรูปแบบวันที่ => เดือน/วัน/ปี (โดยปีอยู่ในรูปแบบของ ค.ศ.) 
- '// Return Date by CultureInfo Class with condition (CultureInfo= en-US and Dateformat = MM/dd/yyyy)
 
 -     Function FormatMyDate2(ByVal MyDate As Date) As String
 
  
-         Dim dtfi As DateTimeFormatInfo = CultureInfo.GetCultureInfo("en-US").DateTimeFormat
 
 -         Return "#" & MyDate.ToString("MM/dd/yyyy", dtfi) & "#"
 
  
-     End Function
 
  คัดลอกไปที่คลิปบอร์ด 
 
ส่วนการใช้งานคิวรี่ ผมใช้ฟังก์ชั่นในวิธีที่ 1 เขียนดังนี้ 
- strSQL = "SELECT * FROM Sample " &
 
 -                      " WHERE " &
 
 -                      " DateField BETWEEN " &
 
 -                      FormatMyDate(dtpDateBegin.Value, "en-US", "MM/dd/yyyy") &
 
 -                      " AND " &
 
 -                      FormatMyDate(dtpDateEnd.Value, "en-US", "MM/dd/yyyy") &
 
 -                      " ORDER BY PrimaryKey "
 
  คัดลอกไปที่คลิปบอร์ด 
 
สุดท้ายนี้ ผมอยากแบ่งปันในสิ่งที่ผมได้จากอาจารย์มาแบ่งปันให้กับสมาชิกหลาย ๆ ท่าน 
เพื่อให้ท่านใดที่สนใจได้นำไปศึกษาต่อยอดแล้วกลับมาแบ่งปันกันต่อไปแบบไม่สิ้นสุดครับ 
ไม่ว่าจะเป็นวิธีที่อาจารย์ถ่ายทอดให้ (ท่านก็ต้องรู้จักวิธีคิด ถึงจะได้ผลลัพธ์) หรือวิธีที่ผมใช้ (ท่านก็ต้องรู้จักคลาสใน .Net)  
สิ่งที่เหมือนกันคือต้องเรียนรู้และเข้าใจใช้งานครับ 
 
ท่านสามารถดาวน์โหลดตัวอย่างโปรแกรมได้ตามด้านล่างนี้ 
 
 
 
 
 |   
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน  
 
x
 
 
 
 
 |