ใครมี function อ่านค่า DATE เป็นภาษา อังกฤษ ขอหน่อยครับ


0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

25 ก.พ. 63 , 11:09:15
อ่าน 909 ครั้ง

Krathok-man

เช่น  21/01/2563   ถ้าอ่านแบบ long date ภาษาไทย จะได้ 21 มกราคม 2563  แต่ถ้าเป็น Eng จะได้   21  January,2020 ที่ต้องการคือ Eng
(โดยไม่เปลี่ยน Date-Time Setting ที่เครือง Com นะครับ)  ก็เลยต้องใช้ function

 

25 ก.พ. 63 , 12:45:41
ตอบกลับ #1

SakDa

Public Function FancyDate(dteInput As Date) As String

'   Convert #6/12/2016#
'   To: 12th June 2016

    FancyDate = Day(dteInput)
   
    Select Case Day(dteInput)
    Case 4 To 20, 24 To 30
        FancyDate = FancyDate & "th"
    Case 1, 21, 31
        FancyDate = FancyDate & "st"
    Case 2, 22
        FancyDate = FancyDate & "nd"
    Case 3, 23
        FancyDate = FancyDate & "rd"
    End Select
   
    FancyDate = FancyDate & Format(dteInput, " mmmm yyyy")


End Function


Sub testdatefunction()

Dim datestr As Date

datestr = CDate("01/01/2017")

Debug.Print datestr, FancyDate(datestr)

End Sub

พอดัดแปลง ใกล้เคียงไหมครับ ไปค้นมาให้ครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: Krathok-man

25 ก.พ. 63 , 14:39:47
ตอบกลับ #2

UnKnown

ด้านบนเป็นเพียงการเติมอักษรต่อท้ายเลขวันที่ครับ
ส่วนมาโครด้านล่างนี่ผมก็แก้จากชื่อเดือนภาษาไทยเป็นชื่อเดือนภาษาอังกฤษครับ
ตัวอย่างการนำไปใช้งาน =Format(Date(),"d ") & MonthNameEng(Date()) & " " & Year(Date()) = 25 February 2020

โค๊ด: [Select]
Option Compare Database

Public Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Public Declare Function GetLocaleInfo Lib "kernel32" _
   Alias "GetLocaleInfoA" _
(ByVal Locale As Long, _
   ByVal LCType As Long, _
   ByVal lpLCData As String, _
   ByVal cchData As Long) As Long

Public Function GetUserLocaleInfo(ByVal dwLocaleID As Long, ByVal dwLCType As Long) As String
   Dim sReturn As String
   Dim r As Long
   r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
   If r Then
      sReturn = Space$(r)
      r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
      If r Then GetUserLocaleInfo = Left$(sReturn, r - 1)
   End If
End Function

Public Function mYear(ByVal yourDate As Date) As Long
    mYear = Year(yourDate)
    If GetUserLocaleInfo(GetSystemDefaultLCID(), &H1009) = 7 Then mYear = Year(yourDate)
End Function

Public Function bYear(ByVal yourDate As Date) As Long
bYear = Year(yourDate)
'If GetUserLocaleInfo(GetSystemDefaultLCID(), &H1009) <> 7 Then bYear = Year(yourDate) + 543
If GetUserLocaleInfo(GetSystemDefaultLCID(), &H1009) = 7 Then bYear = ((Year(yourDate) + 543) - 2500)
End Function

Function MonthNameEng(ByVal yourDate) As String
    If Not IsNull(yourDate) Then
        yourDate = Format(yourDate, "m")
        Select Case yourDate
            Case 1
               MonthNameEng = "January"
            Case 2
               MonthNameEng = "February"
            Case 3
               MonthNameEng = "March"
            Case 4
               MonthNameEng = "April"
            Case 5
               MonthNameEng = "May"
            Case 6
               MonthNameEng = "June"
            Case 7
               MonthNameEng = "July"
            Case 8
               MonthNameEng = "August"
            Case 9
               MonthNameEng = "September"
            Case 10
               MonthNameEng = "October"
            Case 11
               MonthNameEng = "November"
            Case 12
               MonthNameEng = "December"
            Case Else
               MonthNameEng = ""
        End Select
    End If
End Function


มาแถมถ้าอยากให้มีอักษรต่อท้ายด้วยอีก
1. แก้มาโครแรกให้ FancyDate = FancyDate & Format(dteInput, " ")
2. =FancyDate(Date()) & MonthNameEng(Date()) & " " & Year(Date()) จะได้  25th February 2020
« แก้ไขครั้งสุดท้าย: 25 ก.พ. 63 , 16:07:23 โดย UnKnown »
:ninja:     ลองคิด,ลองทำแนวคนไม่เก่งแอคเซส
หมายเหตุ เพื่อความปลอดภัยโปรดสำรองข้อมูลใว้ก่อนการแก้ไข
 
โพสต์นี้ได้รับคำขอบคุณจาก: Krathok-man, SakDa

25 ก.พ. 63 , 15:52:47
ตอบกลับ #3

Krathok-man

OK  ได้ Concept
พัฒนาต่อได้แล้วครับ
ขอบคุณครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa


บอร์ดเรียนรู้ Access สำหรับคนไทย


 

Sitemap 1 2 3 4 5