PHASEXave 1.5.0

Fast, clear and simple interface for calculating time.
Documentation
PHASEXave-1.5.0 has been yanked.

Build and test Deps License License

PHASEXave

Installation

The library is hosted on crates.io.

[dependencies]
PHASEXave = "*"

Usage

Time

Get current time with timezone:

use PHASEXave::{Time};

fn main() {
    let timezone: i8 = 8;
    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:

  • macOS
[dependencies]
PHASEXave = { version = "*", features = ["platform_specific_functions_darwin"] }
  • Unix
[dependencies]
PHASEXave = { version = "*", features = ["platform_specific_functions_unix"] }
  • Windows
[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

Now

use PHASEXave::{Date};

fn main() {
    let timezone: i8 = 8;
    let date: Date = Date::now(timezone);
    println!("{yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
}

Conversion

Gregorian to Julian

Convert any Gregorian date to Julian date:

use PHASEXave::{Date, Julian};

fn main() {
    let timezone: i8 = 8;
    let mut date: Date = Date::now(timezone);
    <Date as Julian>::to_julian(&mut date);
    println!("{yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
}
Julian to Gregorian

Convert any Julian date to Gregorian date:

use PHASEXave::{Date, Julian, Gregorian};

fn main() {
    let timezone: i8 = 8;
    let mut date: Date = Date::now(timezone);
    <Date as Julian>::to_julian(&mut date);
    <Date as Gregorian>::to_gregorian(&mut date);
    println!("{yyyy}/{mm}/{dd}", yyyy = date.year, mm = date.month, dd = date.day);
}
  • any, but except first two days, that missing in Gregorian calendar

Day of Week

Get week day from Gregorian and Julian calendar:

Gregorian

Get week day from Date:

use PHASEXave::{Date, RataDie, Xavetar, Sakamoto};

fn main() {
    let timezone: i8 = 8;

    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);
}
Julian

Get week day from Date:

use PHASEXave::{Date, Julian, RataDie, Xavetar, Sakamoto};

fn main() {
    let timezone: i8 = 8;

    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);
}

License

PHASEXave is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0)

See LICENSE-APACHE and LICENSE-MIT for details.