Basic Usage

This guide covers common usage patterns for the Balinese Calendar crate.

Creating Dates

use balinese_calendar::BalineseDate;

let date = BalineseDate::from_ymd(2026, 3, 25)?;

// Access calendar components
println!("Saka Year: {}", date.saka_year);
println!("Sasih: {:?}", date.sasih);
println!("Saptawara: {:?}", date.saptawara);

Accessing Calendar Components

let date = BalineseDate::from_ymd(2026, 3, 25)?;

println!("Saptawara: {:?}", date.saptawara);
println!("Pancawara: {:?}", date.pancawara);
println!("Wuku: {:?}", date.wuku);
println!("Wuku day: {}", date.wuku_day);
println!("Pawukon day: {}", date.pawukon_day);

Sasih (Lunar Calendar)

println!("Sasih: {:?}", date.sasih);
println!("Saka Year: {}", date.saka_year);
println!("Sasih Day: {:?}", date.sasih_day);

Working with Holy Days

if date.is_purnama {
    println!("Today is Purnama (full moon)");
}

if !date.rahinan.is_empty() {
    println!("Holy days today:");
    for rahinan in &date.rahinan {
        println!("  - {:?}", rahinan);
    }
}

Error Handling

match BalineseDate::from_ymd(2026, 2, 30) {
    Ok(date) => println!("Valid date"),
    Err(e) => eprintln!("Error: {}", e),
}

Next Steps