PHASEXave-1.6.0 has been yanked.

PHASEXave

Installation
The library is hosted on crates.io.
[dependencies]
PHASEXave = "*"
Usage
Time
UTC
Get UTC time:
use PHASEXave::{Time};
fn main() {
let time: Time = Time::utc();
println!("{hours}:{minutes}:{seconds}", hours = time.hours, minutes = time.minutes, seconds = time.seconds);
}
Now
Get current time with timezone:
use PHASEXave::{Time, Sign, Zone};
fn main() {
let timezone: Zone = Zone { sign: Sign::Signed, hours: 4, minutes: 30, seconds: 0 };
let time: Time = Time::now(timezone);
println!("{hours}:{minutes}:{seconds}", hours = time.hours, minutes = time.minutes, seconds = time.seconds);
}
Uptime
Add feature to Cargo.toml:
[dependencies]
PHASEXave = { version = "*", features = ["platform_specific_functions_darwin"] }
[dependencies]
PHASEXave = { version = "*", features = ["platform_specific_functions_unix"] }
[dependencies]
PHASEXave = { version = "*", features = ["platform_specific_functions_windows"] }
Get uptime (without sleep time is not a boot time) (macOS/Darwin/XNU, Unix/Linux, Windows):
use PHASEXave::{Time, Uptime};
fn main() {
let time: Uptime = Time::absolute();
println!("{hours}:{minutes}:{seconds}", hours = time.hours, minutes = time.minutes, seconds = time.seconds);
}
Date
UTC
Julian
Get UTC date for Julian calendar:
use PHASEXave::{CalendarView, Date};
fn main() {
let date: Date = Date::utc(CalendarView::Julian);
println!("{yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
}
Gregorian
Get UTC date for Gregorian calendar:
use PHASEXave::{CalendarView, Date};
fn main() {
let date: Date = Date::utc(CalendarView::Gregorian);
println!("{yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
}
Now
Julian
Get current date with timezone for Julian calendar:
use PHASEXave::{CalendarView, Date, Zone, Sign};
fn main() {
let timezone: Zone = Zone { sign: Sign::Unsigned, hours: 0, minutes: 0, seconds: 0 };
let date: Date = Date::now(CalendarView::Julian, timezone);
println!("{yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
}
Gregorian
Get current date with timezone for Gregorian calendar:
use PHASEXave::{CalendarView, Date, Zone, Sign};
fn main() {
let timezone: Zone = Zone { sign: Sign::Unsigned, hours: 0, minutes: 0, seconds: 0 };
let date: Date = Date::now(CalendarView::Gregorian, timezone);
println!("{yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
}
Conversion
Julian to Gregorian
Convert *any Julian date to Gregorian date:
use PHASEXave::{Date, Sign, Zone, Gregorian, CalendarView};
fn main() {
let mut date: Date = Date {
day: 30,
month: 10,
year: 2023,
timezone: Zone { sign: Sign::Unsigned, hours: 0, minutes: 0, seconds: 0 },
unix_time: 0,
era_days: 0,
view: CalendarView::Julian
};
<Date as Gregorian>::to_gregorian(&mut date, false);
println!("{yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
println!("{era_days}:{unix_time}", era_days = date.era_days, unix_time = date.unix_time);
}
* - any, but except first two days, that missing in Gregorian calendar
Gregorian to Julian
Convert any Gregorian date to Julian date:
use PHASEXave::{Date, Sign, Zone, Julian, CalendarView};
fn main() {
let mut date: Date = Date {
day: 12,
month: 11,
year: 2023,
timezone: Zone { sign: Sign::Unsigned, hours: 0, minutes: 0, seconds: 0 },
unix_time: 0,
era_days: 0,
view: CalendarView::Gregorian
};
<Date as Julian>::to_julian(&mut date, false);
println!("{yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
println!("{era_days}:{unix_time}", era_days = date.era_days, unix_time = date.unix_time);
}
Between
Convert any Gregorian to Julian and Julian to Gregorian:
use PHASEXave::{Date, Julian, Gregorian, Sign, Zone};
fn main() {
let timezone: Zone = Zone { sign: Sign::Unsigned, hours: 3, minutes: 0, seconds: 0 };
let mut date: Date = Date::now(timezone);
<Date as Julian>::to_julian(&mut date, true);
<Date as Gregorian>::to_gregorian(&mut date, true);
println!("{yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
}
Day of Week
Get week day from Gregorian and Julian calendar:
Julian
Get week day from Date:
use PHASEXave::{Date, Julian, RataDie, Xavetar, Sakamoto, Sign, Zone};
fn main() {
let timezone: Zone = Zone { sign: Sign::Unsigned, hours: 8, minutes: 0, seconds: 0 };
let mut date: Date = Date::now(timezone);
<Date as Julian>::to_julian(&mut date);
println!(
"Julian Week day:\n\nRata Die: {rata_die}\nXavetar: {xavetar}\nSakamoto: {sakamoto}\n",
rata_die = <Date as RataDie>::week_day(&date).name(),
xavetar = <Date as Xavetar>::week_day(&date).name(),
sakamoto = <Date as Sakamoto>::week_day(&date).name(),
);
println!("Date: {yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
}
Get week day from any date:
use PHASEXave::{CalendarView, Date, Julian, RataDie, Xavetar, Sakamoto};
fn main() {
let (yyyy, mm, dd): (u128, u8, u8) = (1582, 10, 5);
println!(
"Julian Week day:\n\nRata Die: {rata_die}\nXavetar: {xavetar}\nSakamoto: {sakamoto}\n",
rata_die = <Date as RataDie>::from(CalendarView::Julian, yyyy, mm, dd).name(),
xavetar = <Date as Xavetar>::from(CalendarView::Julian, yyyy, mm, dd).name(),
sakamoto = <Date as Sakamoto>::from(CalendarView::Julian, yyyy, mm, dd).name(),
);
println!("Date: {yyyy}/{mm}/{dd}", yyyy = yyyy, mm = mm, dd = dd);
}
Gregorian
Get week day from Date:
use PHASEXave::{Date, RataDie, Xavetar, Sakamoto, Sign, Zone};
fn main() {
let timezone: Zone = Zone { sign: Sign::Unsigned, hours: 8, minutes: 0, seconds: 0 };
let date: Date = Date::now(timezone);
println!(
"Gregorian Week day:\n\nRata Die: {rata_die}\nSakamoto: {sakamoto}\nXavetar: {xavetar}\n",
rata_die = <Date as RataDie>::week_day(&date).name(),
xavetar = <Date as Xavetar>::week_day(&date).name(),
sakamoto = <Date as Sakamoto>::week_day(&date).name(),
);
println!("Date: {yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
}
Get week day from any date:
use PHASEXave::{CalendarView, Date, Julian, RataDie, Xavetar, Sakamoto};
fn main() {
let (yyyy, mm, dd): (u128, u8, u8) = (1582, 10, 5);
println!(
"Gregorian Week day:\n\nRata Die: {rata_die}\nXavetar: {xavetar}\nSakamoto: {sakamoto}\n",
rata_die = <Date as RataDie>::from(CalendarView::Gregorian, yyyy, mm, dd).name(),
xavetar = <Date as Xavetar>::from(CalendarView::Gregorian, yyyy, mm, dd).name(),
sakamoto = <Date as Sakamoto>::from(CalendarView::Gregorian, yyyy, mm, dd).name(),
);
println!("Date: {yyyy}/{mm}/{dd}", yyyy = yyyy, mm = mm, dd = dd);
}
License
PHASEXave is primarily distributed under the terms of three the Anti-Virus license and MIT license and the Apache License (Version 2.0)
See LICENSE-ANTI-VIRUS and LICENSE-APACHE and LICENSE-MIT for details.