[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Date function enhancement Request LibreOffice doc attached.
From: |
Leslie S Satenstein |
Subject: |
Date function enhancement Request LibreOffice doc attached. |
Date: |
Wed, 17 Jan 2018 16:16:28 +0000 (UTC) |
I noted that there is no "date +%letter" that will tell me directly, the number
of days since January 1, 1970. or julian date routines
v=date +%secho (( $v / 86400 ))
17548 #the number of days since 1 jan 1970 ( a Thursday)
It would be preferable if the julian date rouitine shown below was used. It
allows modulo 7 arithmetic to determine the day of the week. With the code
shown incorporated as two +%? values (forward to julian and back). benefit
easy calculation of the difference between two dates as well, the day of the
week. With the logic shown, year 0000 12 31 is a Sunday.
C code for julian to gregorian and reverse is provided below my signature. The
code was provided in the defunct Dr Dobbs journal by Dr. Peter Meyers (his
paper is attached) and is in the publc domain.
Some test results with the attached algorithms.
juldate 1970 1 1
Julian Day = 2440588 WeekDay=4, WeekdayISO=4="Thursday"
Year=1970,Month=01,Day=01 (matches cal 1970 )
juldate 2018 1 17
Julian Day = 2458136 WeekDay=3, WeekdayISO=3="Wednesday"
Year=2018,Month=01,Day=17 (modulo 7 on Julian day = 3)
Does coreutils have anything similar, so that the date function can be left
alone?
Regards
Leslie
Leslie Satenstein
Montréal Québec, Canada
The Julian day (jd) is computed from Gregorian day, month and year(d, m, y) as
follows:
jd = ( 1461 * ( y + 4800 + ( m - 14 ) / 12 ) ) / 4 +
( 367 * ( m - 2 - 12 * ( ( m - 14 ) / 12 ) ) ) / 12 -
( 3 * ( ( y + 4900 + ( m - 14 ) / 12 ) / 100 ) ) / 4 +
d - 32075
Division is to be understood as in integer arithmetic, with theremainders
discarded.
Converting from the Julian day to the Gregorian day is performedthus:
l = jd + 68569
n = ( 4 * l ) / 146097
l = l - ( 146097 * n + 3 ) / 4
i = ( 4000 * ( l + 1 ) ) / 1461001 //(that's 1,461,001)
l = l - ( 1461 * i ) / 4 + 31
j = ( 80 * l ) / 2447
d = l - ( 2447 * j ) / 80
l = j / 11
m = j + 2 - ( 12 * l )
y = 100 * ( n - 49 ) + i + l //(that's a lower-case L)
JulianDateExplanation.odt
Description: application/vnd.oasis.opendocument.text
- Date function enhancement Request LibreOffice doc attached.,
Leslie S Satenstein <=
- Prev by Date:
Re: Why cut treats one column input differently for out-of-range field spec?
- Next by Date:
Re: Multibyte support for sort, uniq, join, tr, cut, paste, expand, unexpand, fmt, fold, and pr
- Previous by thread:
Why cut treats one column input differently for out-of-range field spec?
- Next by thread:
Re: Date function enhancement Request LibreOffice doc attached.
- Index(es):