Skip to content
Snippets Groups Projects
Commit 9e5d70fa authored by Uwe Schulzweida's avatar Uwe Schulzweida
Browse files

Added function calDay_decode() and calDay_encode().

parent ada3ad75
No related branches found
No related tags found
No related merge requests found
Pipeline #18349 failed
#include <limits.h>
#include <stdio.h>
#include "cdi.h" /* CALENDAR_ */
#include "calendar.h"
#include "error.h"
#include "timebase.h"
......@@ -122,6 +121,36 @@ decode_calday(int calendar, int64_t julday, int *year, int *month, int *day)
decode_julday(calendar, julday, year, month, day);
}
int64_t
calDay_encode(int calendar, CdiDate date)
{
const int dpy = calendar_dpy(calendar);
if (dpy == 360 || dpy == 365 || dpy == 366)
return encode_day(dpy, date.year, date.month, date.day);
else
return encode_julday(calendar, date.year, date.month, date.day);
}
CdiDate
calDay_decode(int calendar, int64_t julday)
{
int year, month, day;
const int dpy = calendar_dpy(calendar);
if (dpy == 360 || dpy == 365 || dpy == 366)
decode_day(dpy, julday, &year, &month, &day);
else
decode_julday(calendar, julday, &year, &month, &day);
CdiDate date;
date.year = year;
date.month = month;
date.day = day;
return date;
}
#ifdef TEST
static int
date_to_calday(int calendar, int64_t date)
......
......@@ -3,7 +3,7 @@
// clang-format off
#include <inttypes.h>
#include "cdi.h"
#ifdef __cplusplus
extern "C" {
......@@ -12,6 +12,9 @@ extern "C" {
int64_t encode_calday(int calendar, int year, int month, int day);
void decode_calday(int calendar, int64_t julday, int *year, int *month, int *day);
int64_t calDay_encode(int calendar, CdiDate date);
CdiDate calDay_decode(int calendar, int64_t julday);
int calendar_dpy(int calendar);
int days_per_year(int calendar, int year);
int days_per_month(int calendar, int year, int month);
......
......@@ -35,23 +35,23 @@ julianDate_encode(int calendar, CdiDateTime dt)
{
JulianDate julianDate;
julianDate.julianDay = encode_calday(calendar, dt.date.year, dt.date.month, dt.date.day);
julianDate.secondOfDay = encode_secofday(dt.time.hour, dt.time.minute, dt.time.second, dt.time.ms);
julianDate.julianDay = calDay_encode(calendar, dt.date);
julianDate.secondOfDay = secofday_encode(dt.time);
return julianDate;
}
/*
CdiDateTime
julianDate_decode(int calendar, JulianDate julianDate)
{
CdiDateTime dt;
decode_calday(calendar, julianDate.julianDay, &dt.date.year, &dt.date.month, &dt.date.day);
decode_secofday(julianDate.secondOfDay, &dt.time.hour, &dt.time.minute, &dt.time.second, &dt.time.ms);
dt.date = calDay_decode(calendar, julianDate.julianDay);
dt.time = secofday_decode(julianDate.secondOfDay);
return dt;
}
*/
static void
adjust_seconds(JulianDate *julianDate)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment