mtime 1.2.2
Loading...
Searching...
No Matches
mtime_datetime.h
Go to the documentation of this file.
1// Copyright (c) 2013-2024 MPI-M, Luis Kornblueh, Rahul Sinha and DWD, Florian Prill. All rights reserved.
2//
3// SPDX-License-Identifier: BSD-3-Clause
4//
20#ifndef _MTIME_DATETIME_H
21#define _MTIME_DATETIME_H
22
23#include <stdint.h>
24#include <stdbool.h>
25
26#include "mtime_date.h"
27#include "mtime_time.h"
28
36{
37 struct _date date;
38 struct _time time;
39};
40
41struct _datetime *newDateTime(const char *datetime_string);
42
43struct _datetime *newRawDateTime(int64_t _year, int _month, int _day, int _hour, int _minute, int _second, int _ms);
44
46
47void deallocateDateTime(struct _datetime *dt);
48
49compare_return_val compareDatetime(struct _datetime *dt1, struct _datetime *dt2);
50
51struct _datetime *replaceDatetime(struct _datetime *dtsrc, struct _datetime *dtdest);
52
53char *datetimeToString(struct _datetime *dt, char *toStr);
54
55char *datetimeToBasicString(struct _datetime *dt, char *toStr);
56
57char *datetimeToPosixString(struct _datetime *dt, char *toStr, char *fmtString);
58
60
62
64static inline bool
65testYearIsLeapYear(int64_t year)
66{
67 bool isLeapYear = !(year % 400) || ((year % 100) && !(year % 4));
68 return isLeapYear;
69}
70
71struct _datetime *convertDateToDateTime(struct _date *d, struct _datetime *dt_return);
72
73struct _date *convertDateTimeToDate(struct _datetime *dt, struct _date *d_return);
76int getDayOfYearFromDateTime(struct _datetime *currentdt);
77
79
81
82struct _julianday *getJulianDayFromDateTime(struct _datetime *dt, struct _julianday *jd);
83
84struct _datetime *getDateTimeFromJulianDay(struct _julianday *jd, struct _datetime *dt);
85
86compare_return_val getDateTimeIsInRange(struct _datetime *dtRef, struct _datetime *dtStart, struct _datetime *dtEnd);
87
92#endif
struct _date date
Date elements.
Definition mtime_datetime.h:37
struct _time time
Time elements.
Definition mtime_datetime.h:38
int getNoOfDaysInYearDateTime(struct _datetime *dt)
Get number of days in the Year of DateTime.
Definition mtime_datetime.c:525
compare_return_val compareDatetime(struct _datetime *dt1, struct _datetime *dt2)
Compare two datetimes and return (dt1 > dt2) OR (dt1 = dt2) OR (dt1 < dt2).
Definition mtime_datetime.c:185
struct _datetime * getDateTimeFromJulianDay(struct _julianday *jd, struct _datetime *dt)
Get the DateTime from Julian Day.
Definition mtime_datetime.c:645
int64_t getNoOfSecondsElapsedInMonthDateTime(struct _datetime *dt)
Get number of seconds elapsed in the month of DateTime.
Definition mtime_datetime.c:575
char * datetimeToBasicString(struct _datetime *dt, char *toStr)
Get DateTime as a basic string.
Definition mtime_datetime.c:699
struct _datetime * newRawDateTime(int64_t _year, int _month, int _day, int _hour, int _minute, int _second, int _ms)
Construct new DateTime using 'raw' numerical values.
Definition mtime_datetime.c:119
int getDayOfYearFromDateTime(struct _datetime *currentdt)
Get the 'day-of-year' value of a DateTime.
Definition mtime_datetime.c:413
char * datetimeToString(struct _datetime *dt, char *toStr)
Get DateTime as a string.
Definition mtime_datetime.c:667
char * datetimeToPosixString(struct _datetime *dt, char *toStr, char *fmtString)
Get DateTime in 'struct tm' format and return as a string.
Definition mtime_datetime.c:739
struct _julianday * getJulianDayFromDateTime(struct _datetime *dt, struct _julianday *jd)
Get the Julian Day from DateTime.
Definition mtime_datetime.c:622
int getNoOfDaysInMonthDateTime(struct _datetime *dt)
Get nod (number of Days) in the month of DateTime.
Definition mtime_datetime.c:470
struct _datetime * constructAndCopyDateTime(struct _datetime *dt)
Copy the values and construct a new datetime.
Definition mtime_datetime.c:144
void deallocateDateTime(struct _datetime *dt)
Destructor of DateTime.
Definition mtime_datetime.c:161
struct _datetime * newDateTime(const char *datetime_string)
Construct new DateTime using an ISO 8601 conforming string.
Definition mtime_datetime.c:72
int getNoOfSecondsElapsedInDayDateTime(struct _datetime *dt)
Get number of seconds elapsed in the day of DateTime.
Definition mtime_datetime.c:596
struct _datetime * replaceDatetime(struct _datetime *dtsrc, struct _datetime *dtdest)
COPY a DateTime object.
Definition mtime_datetime.c:294
struct _date containing usual date parameters.
Definition mtime_date.h:32
struct _datetime contains a struct _date and a struct _time element.
Definition mtime_datetime.h:36
Struct _julianday containing julian day parameters.
Definition mtime_julianDay.h:32
struct _time containing usual time parameters.
Definition mtime_time.h:32
Date and some operations supported on Date.
Time and some operations supported on Time.