---
title: Julian
summary: API reference for Julian.
status: draft
owner: saif-docgen
last_reviewed: 2026-09-15
library: SAIF.Framework.Common
reference_type: package
---

# Julian

Static helpers for validating and converting between Julian-format date strings (year + day-of-year) and `DateTime`, matching an EDI/legacy Julian date convention.

## Purpose
- Static helpers for validating and converting between Julian-format date strings (year + day-of-year) and `DateTime`, matching an EDI/legacy Julian date convention.

## Context
- Namespace: `SAIF.Common`
- Assembly/package: `SAIF.Framework.Common`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| IsValid(int value, out string message) | `public static bool IsValid(int value, out string message)` | Validates a numeric Julian date value, returning a diagnostic message via `out` when invalid. ([BR-022](../../business-rules.md#br-022-a-julian-date-must-contain-at-least-4-digits)) |
| IsValid(string value, out string message) | `public static bool IsValid(string value, out string message)` | Validates a string Julian date value, returning a diagnostic message via `out` when invalid. ([BR-023](../../business-rules.md#br-023-a-julian-string-that-cannot-be-converted-to-int32-is-invalid)) |
| GetYear(string value, out bool isLeapYear, int centuryBase) | `public static int GetYear(string value, out bool isLeapYear, int centuryBase)` | Resolves the 4-digit year and leap-year flag encoded in a Julian string, using `centuryBase` to disambiguate the 2-digit year. ([BR-024](<../../business-rules.md#br-024-when-no-millennium-is-supplied-(or-it-is-below-1000)%2C-the-millennium-is-derived-from-the-current-system-year's-first-digit-x-1000%2C-and-a-1--or-2-digit-julian-year-is-offset-by-it>), [BR-025](<../../business-rules.md#br-025-leap-year-status-is-determined-using-the-julian-calendar-(system.globalization.juliancalendar)%2C-not-the-gregorian-calendar>)) |
| ToJulian(this DateTime value, int centuryBase) | `public static string ToJulian(this DateTime value, int centuryBase)` | Encodes a `DateTime` as a Julian-format string (year + day-of-year) relative to `centuryBase`. ([BR-027](<../../business-rules.md#br-027-a-julian-string-is-encoded-as-the-year-(2-digit-by-default%2C-4-digit-on-request)-followed-by-the-zero-padded-3-digit-day-of-year>)) |
| ToDate(string value, int centuryBase) | `public static DateTime ToDate(string value, int centuryBase)` | Parses a Julian-format string back into a `DateTime`, resolving the year via `GetYear`. ([BR-024](<../../business-rules.md#br-024-when-no-millennium-is-supplied-(or-it-is-below-1000)%2C-the-millennium-is-derived-from-the-current-system-year's-first-digit-x-1000%2C-and-a-1--or-2-digit-julian-year-is-offset-by-it>), [BR-025](<../../business-rules.md#br-025-leap-year-status-is-determined-using-the-julian-calendar-(system.globalization.juliancalendar)%2C-not-the-gregorian-calendar>), [BR-026](../../business-rules.md#br-026-the-day-of-year-portion-of-a-julian-date-must-not-exceed-365%2C-or-366-in-a-leap-year)) |


## Sources
- `Common/SAIF.Common/Classes/Julian.cs`
