Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Date/Time Utilities

Julian Date System

DSS uses a modified Julian date where:

  • Julian 0 = 31 December 1899
  • Julian 1 = 1 January 1900

Rust API

#![allow(unused)]
fn main() {
use dss_core::datetime;

// String to Julian
let j = datetime::date_to_julian("15MAR2020");

// Julian to Y/M/D
let (y, m, d) = datetime::julian_to_year_month_day(j);

// Parse various date formats
let ymd = datetime::parse_date("01JAN2020");      // DDMonYYYY
let ymd = datetime::parse_date("2020-03-15");      // ISO
let ymd = datetime::parse_date("3/15/2020");       // US

// Y/M/D to Julian
let j = datetime::year_month_day_to_julian(2020, 3, 15);

// Interval parsing
let (interval_sec, block_months) = datetime::parse_interval("1HOUR").unwrap();
// (3600, 1) = 3600 seconds per value, monthly blocks

// Block operations
let blocks = datetime::generate_block_starts(start_j, end_j, 1); // monthly
let n = datetime::values_in_block(jan1_julian, 3600, 1);          // 744 for January hourly
}

Python API

j = hecdss_rs.DssFile.date_to_julian("15MAR2020")
y, m, d = hecdss_rs.DssFile.julian_to_ymd(j)
result = hecdss_rs.DssFile.parse_date("2020-03-15")  # (2020, 3, 15) or None

Supported Date Formats

FormatExampleNotes
DDMonYYYY01JAN2020, 15MAR2020Standard DSS format
MonYYYYJAN2020Day defaults to 1
ISO 86012020-01-15YYYY-MM-DD
US1/15/2020, 3-15-2020M/D/YYYY or M-D-YYYY

Supported Intervals

E-PartSecondsBlock Size
1MIN60Monthly
5MIN300Monthly
15MIN900Monthly
30MIN1800Monthly
1HOUR3600Monthly
6HOUR21600Monthly
1DAY86400Yearly
1WEEK604800Yearly
1MONVariableDecade
1YEARVariableCentury