Post Reply 
HP Prime: Day Number of the Year
01-21-2014, 01:24 PM
Post: #1
HP Prime: Day Number of the Year
This formula calculates the day number of any date (given month and day). A 365 day year is used. If you are operating with a leap year with dates after February 28, add 1.

Hence in non-leap years, January 1 is Day 1, February 1 is Day 32, etc..., December 1 is 335, and December 31 is 365.

Details are at my blog: http://edspi31415.blogspot.com/2014/01/h...-year.html

Formula:

Day Number, 365 Day Year, M≤2:
D + IP(30.6M + 1.6 + 367.2) - (34 + 365) = D + IP(30.6M + 368.8) - 399

M>2:
D + IP(30.6M + 1.6) - 34

HP Prime Program DAYNO:
EXPORT DAYNO(M,D)
BEGIN
IF M≤2 THEN
RETURN IP(30.6*M+368.8)+D-399;
ELSE
RETURN IP(30.6*M+1.6)+D-34;
END;
END;
Visit this user's website Find all posts by this user
Quote this message in a reply
01-21-2014, 03:31 PM (This post was last modified: 01-21-2014 09:21 PM by Damien.)
Post: #2
RE: HP Prime: Day Number of the Year
Hi everyone,

For any gregorian date (year>1582). The Nth day of the year can be calculated with the formulas:

For non leap year:
N=INT(275*Month/9)-2*INT((Month+9)/12)+Day-30
For leap year:
N=INT(275*Month/9)-INT((Month+9)/12)+Day-30
With Month from 1 to 12, Day from 1 to 31.
(Taken from a book about astronomical calculation written by Jean MEEUS)

For the Prime something like that should work fine:
Code:

EXPORT Date2Days(date)
BEGIN
LOCAL b,a,m,j;
// date : [YYYY].[MM][DD]
 IP(date)▶a; // YYYY
 IP(FP(date)*100)▶m; // MM
 IP(FP(FP(date)*100)*100)▶j; // DD
// gregorian leap year ?
 IF (NOT(a MOD 4) AND a MOD 100)  
     OR (NOT (a MOD 400)) THEN 
  b:=1; // leap year 
 ELSE
  b:=2; //ordinary year
 END;
 RETURN IP(275*m/9)-b*IP((m+9)/12)+j-30;
END;

Enter dates in HP Prime format : YYYY.MMDD

Example: 1970 june 9th (1970.0609) gives N=160.

Regards,

Damien.
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)