× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



In this case, Julian is the 4713 one - I'd suggested using current date, John has used 1/1/0001 - his works fine. Once you have the "date" variable (different name, please!!!), then formatting is simple.

The JULIAN_DAY SQL function states it is using JDN.

Your question about calendar changes makes me think it'd be better to do something like this variant of John's technique, since it'd be done with dates fairly contemporary, long after any of those changes - here goes - it does require SQL

exec sql
set :convertedDate = current date - (julian_day(current date) - :juliancount) days;

Running this in STRSQL got Nov 20, 2014, as expected

select current date - (julian_day(current date) - 2456982) days from sysibm/sysdummy1

Host variable juliancount would be 2456982 in this case, derived by whatever means.

A day in the future worked fine, as well.

If the OP doesn't want to use embedded, he could use a more contemporary date for the offset, as John did - maybe 1/1/2000 - %days can take a negative number, so no need to check the julian number for future dates.

Vern

On 11/24/2014 12:07 PM, Jon Paris wrote:
Isn’t that the problem with “Julian” dates John. There’s more than one flavour!

I apparently have never encountered the “real” version before as defined here: "The Julian Day Number (JDN) is the integer assigned to a whole solar day in the Julian day count starting from noon Greenwich Mean Time, with Julian day number 0 assigned to the day starting at noon on January 1, 4713 BC, proleptic Julian calendar (November 24, 4714 BC, in the proleptic Gregorian calendar)."

Not quite sure how it can work though when you go that far back since I seem to recall there were a few calendar adjustments over the years - wasn’t there one in 1582 when Lilian dates started?


Jon Paris

www.partner400.com
www.SystemiDeveloper.com

On Nov 24, 2014, at 12:53 PM, John Yeung <gallium.arsenide@xxxxxxxxx> wrote:

On Mon, Nov 24, 2014 at 12:29 PM, Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:
Assuming that you want an RPG solution … I have no time to try this
but it should work if you just take a base date 0001/01/01 and add
the number of days.
No, it doesn't. Today (2014-11-24) is only day 735561, when counting
0001-01-01 as day 1.

But you can use the same technique, just with the proper offset.

date = d'0001-01-01' + %days(n - 1721426)

where n is the input integer.

Birgitta's SQL-based solution is the nicest, if you're willing to do
embedded SQL.

John Y.
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.