On 2018-05-16 18:02, Ted Roche wrote:
LastDayOfMonth() or LDOM back in my 8.3 days, was always a popular request:

http://fox.wikis.com/wc.dll?Wiki~FindingTheLastDayOfTheMonth~VB


Ed Leafe had shared a ton of date functions for VFP years ago. Here's what I have in my framework from Ed:

        FUNCTION FirstDayOfMonth(tdDate as Date) as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                return (tdDate - (DAY(tdDate)-1))
        ENDFUNC && FirstDayOfMonth


        FUNCTION FirstDayOfQuarter(tdDate as Date) as Date
LOCAL lcDate as String, lcMonth as String, lcYear as String, ldDate as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                lcDate = DTOS(tdDate)
                lcMonth = SUBSTR(lcDate,5,2)
                lcYear = LEFT(lcDate,4)
                DO CASE
                        CASE BETWEEN(VAL(lcMonth),1,3)
                                lcDate = "01/01/" + lcYear
                        CASE BETWEEN(VAL(lcMonth),4,6)
                                lcDate = "04/01/" + lcYear
                        CASE BETWEEN(VAL(lcMonth),7,9)
                                lcDate = "07/01/" + lcYear
                        OTHERWISE && CASE BETWEEN(VAL(lcMonth),10,12)
                                lcDate = "10/01/" + lcYear
                ENDCASE
                ldDate = CTOD(lcDate)
                return ldDate
        ENDFUNC && FirstDayOfQuarter


        FUNCTION LastDayOfQuarter(tdDate as Date) as Date
LOCAL lcDate as String, lcMonth as String, lcDay as String, ldDate as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                lcDate = DTOS(tdDate)
                lcMonth = SUBSTR(lcDate,5,2)
                lcYear = LEFT(lcDate,4)
                DO CASE
                        CASE BETWEEN(VAL(lcMonth),1,3)
                                lcDate = "01/31/" + lcYear
                        CASE BETWEEN(VAL(lcMonth),4,6)
                                lcDate = "04/30/" + lcYear
                        CASE BETWEEN(VAL(lcMonth),7,9)
                                lcDate = "07/31/" + lcYear
                        OTHERWISE && CASE BETWEEN(VAL(lcMonth),10,12)
                                lcDate = "10/31/" + lcYear
                ENDCASE
                ldDate = CTOD(lcDate)
                return ldDate
        ENDFUNC && LastDayOfQuarter


        FUNCTION FirstDayOfYear(tdDate as Date) as Date
                LOCAL lcDate as String, lcYear as String, ldDate as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                lcDate = DTOS(tdDate)
                lcYear = LEFT(lcDate,4)
                lcDate = "01/01/" + lcYear
                ldDate = CTOD(lcDate)
                return ldDate
        ENDFUNC && FirstDayOfYear


        FUNCTION LastDayOfYear(tdDate as Date) as Date
                LOCAL lcDate as String, lcYear as String, ldDate as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                lcDate = DTOS(tdDate)
                lcYear = LEFT(lcDate,4)
                lcDate = "12/31/" + lcYear
                ldDate = CTOD(lcDate)
                return ldDate
        ENDFUNC && LastDayOfYear


        FUNCTION LastDayOfMonth(tdDate as Date) as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                return (GOMONTH(tdDate,1) - DAY(GOMONTH(tdDate,1)))
        ENDFUNC && LastDayOfMonth


        FUNCTION FirstDayOfWeek(tdDate as Date) as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                return (tdDate - (DOW(tdDate)-1))
        ENDFUNC && FirstDayOfWeek


        FUNCTION LastDayOfWeek(tdDate as Date) as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                return (tdDate + (7 - DOW(tdDate)))
        ENDFUNC && LastDayOfWeek


        FUNCTION LastMonthDate(tdDate as Date) as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                return (GOMONTH(tdDate,-1))
        ENDFUNC && LastDayOfWeek


        FUNCTION NextMonthDate(tdDate as Date) as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                return (GOMONTH(tdDate,1))
        ENDFUNC && LastDayOfWeek


        FUNCTION JulianDate(tdDate as Date) as Date
                if PARAMETERS()=0 then
                        tdDate = date()
                endif
                return (tdDate - DATE(YEAR(tdDate)-1, 12, 31))
        ENDFUNC && JulianDate

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/[email protected]
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to