3 use proxmox
::tools
::time
::*;
12 pub fn new(epoch
: i64, utc
: bool
) -> Result
<Self, Error
> {
13 let t
= if utc { gmtime(epoch)? }
else { localtime(epoch)? }
;
17 pub fn into_epoch(mut self) -> Result
<i64, Error
> {
18 let epoch
= if self.utc { timegm(&mut self.t)? }
else { timelocal(&mut self.t)? }
;
22 /// increases the year by 'years' and resets all smaller fields to their minimum
23 pub fn add_years(&mut self, years
: libc
::c_int
) -> Result
<(), Error
> {
24 if years
== 0 { return Ok(()); }
30 self.t
.tm_year
+= years
;
34 /// increases the month by 'months' and resets all smaller fields to their minimum
35 pub fn add_months(&mut self, months
: libc
::c_int
) -> Result
<(), Error
> {
36 if months
== 0 { return Ok(()); }
41 self.t
.tm_mon
+= months
;
45 /// increases the day by 'days' and resets all smaller fields to their minimum
46 pub fn add_days(&mut self, days
: libc
::c_int
) -> Result
<(), Error
> {
47 if days
== 0 { return Ok(()); }
51 self.t
.tm_mday
+= days
;
55 pub fn year(&self) -> libc
::c_int { self.t.tm_year + 1900 }
// see man mktime
56 pub fn month(&self) -> libc
::c_int { self.t.tm_mon + 1 }
57 pub fn day(&self) -> libc
::c_int { self.t.tm_mday }
58 pub fn hour(&self) -> libc
::c_int { self.t.tm_hour }
59 pub fn min(&self) -> libc
::c_int { self.t.tm_min }
60 pub fn sec(&self) -> libc
::c_int { self.t.tm_sec }
62 // Note: tm_wday (0-6, Sunday = 0) => convert to Sunday = 6
63 pub fn day_num(&self) -> libc
::c_int
{
64 (self.t
.tm_wday
+ 6) % 7
67 pub fn set_time(&mut self, hour
: libc
::c_int
, min
: libc
::c_int
, sec
: libc
::c_int
) -> Result
<(), Error
> {
68 self.t
.tm_hour
= hour
;
74 pub fn set_min_sec(&mut self, min
: libc
::c_int
, sec
: libc
::c_int
) -> Result
<(), Error
> {
80 fn normalize_time(&mut self) -> Result
<(), Error
> {
81 // libc normalizes it for us
85 timelocal(&mut self.t
)?
;
90 pub fn set_sec(&mut self, v
: libc
::c_int
) -> Result
<(), Error
> {
95 pub fn set_min(&mut self, v
: libc
::c_int
) -> Result
<(), Error
> {
100 pub fn set_hour(&mut self, v
: libc
::c_int
) -> Result
<(), Error
> {
102 self.normalize_time()
105 pub fn set_mday(&mut self, v
: libc
::c_int
) -> Result
<(), Error
> {
107 self.normalize_time()
110 pub fn set_mon(&mut self, v
: libc
::c_int
) -> Result
<(), Error
> {
111 self.t
.tm_mon
= v
- 1;
112 self.normalize_time()
115 pub fn set_year(&mut self, v
: libc
::c_int
) -> Result
<(), Error
> {
116 self.t
.tm_year
= v
- 1900;
117 self.normalize_time()