VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Returns the Gregorian date (dd/mm/yy), for any valid Julian date (yyyyddd).

by Trent Renshaw (1 Submission)
Category: Math/Dates
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Fri 21st June 2002
Date Added: Mon 8th February 2021
Rating: (1 Votes)

Returns the Gregorian date (dd/mm/yy), for any valid Julian date (yyyyddd).

Rate Returns the Gregorian date (dd/mm/yy), for any valid Julian date (yyyyddd).



    
' Returns the Gregorian date (dd/mm/yy), for any valid Julian date (yyyyddd)
'
' By: Trent Renshaw
' Email: [email protected]
'
' Comments: Use and distribute freely.
'
' Syntax: GDate(yyyyddd)
' Example: GDate(2002147)
'
' Created: 27/05/02 23:45
' Last Modified: 05/06/02 10:50

Dim Year As Integer          'JDate vars
Dim Day As Integer

Dim LeapYear As Boolean

Dim YY As Integer            'GDate vars
Dim MM As Integer
Dim DD As Integer

Dim YYStr As String
Dim MMStr As String
Dim DDStr As String

Year = Left$(JDate, 4)
Day = Mid$(JDate, 5, 3)
YY = Mid$(JDate, 3, 2)

If Int(Year / 4) = (Year / 4) Then LeapYear = True

If LeapYear = True Then

    Select Case Day                 'Leap year cases

        Case Is <= 31               'January
            MM = "01"
            DD = Mid$(Day, 2, 2)
        
        Case Is <= 60               'February
            MM = "02"
            DD = Day - 31
        
        Case Is <= 91               'March
            MM = "03"
            DD = Day - 60
    
        Case Is <= 121              'April
            MM = "04"
            DD = Day - 91
    
        Case Is <= 152              'May
            MM = "05"
            DD = Day - 121
    
        Case Is <= 182              'June
            MM = "06"
            DD = Day - 152
    
        Case Is <= 213              'July
            MM = "07"
            DD = Day - 182
    
        Case Is <= 244              'August
            MM = "08"
            DD = Day - 213
    
        Case Is <= 274              'September
            MM = "09"
            DD = Day - 244
    
        Case Is <= 305              'October
            MM = "10"
            DD = Day - 274
    
        Case Is <= 335              'November
            MM = "11"
            DD = Day - 305
    
        Case Is <= 366              'December
            MM = "12"
            DD = Day - 335

    End Select
    
Else

    Select Case Day                 'Normal year cases

        Case Is <= 31               'January
            MM = "01"
            DD = Day
        
        Case Is <= 59               'February
            MM = "02"
            DD = Day - 31
        
        Case Is <= 90               'March
            MM = "03"
            DD = Day - 59
    
        Case Is <= 120              'April
            MM = "04"
            DD = Day - 90
    
        Case Is <= 151              'May
            MM = "05"
            DD = Day - 120
    
        Case Is <= 181              'June
            MM = "06"
            DD = Day - 151
    
        Case Is <= 212              'July
            MM = "07"
            DD = Day - 181
    
        Case Is <= 243              'August
            MM = "08"
            DD = Day - 212
    
        Case Is <= 273              'September
            MM = "09"
            DD = Day - 243
    
        Case Is <= 304              'October
            MM = "10"
            DD = Day - 273
    
        Case Is <= 334              'November
            MM = "11"
            DD = Day - 304
    
        Case Is <= 365              'December
            MM = "12"
            DD = Day - 334

    End Select

End If

YYStr = CStr(YY)                    'Convert literal date ints to string
MMStr = CStr(MM)
DDStr = CStr(DD)

If YY < 10 Then YYStr = "0" & YY            'Ensure date is dd/mm/yy not d/m/y
If MM < 10 Then MMStr = "0" & MM
If DD < 10 Then DDStr = "0" & DD

GDate = DDStr & "/" & MMStr & "/" & YYStr   'Concatenate GDate

End Function

Download this snippet    Add to My Saved Code

Returns the Gregorian date (dd/mm/yy), for any valid Julian date (yyyyddd). Comments

No comments have been posted about Returns the Gregorian date (dd/mm/yy), for any valid Julian date (yyyyddd).. Why not be the first to post a comment about Returns the Gregorian date (dd/mm/yy), for any valid Julian date (yyyyddd)..

Post your comment

Subject:
Message:
0/1000 characters