title: NodaTime and Ancient Times
body: <p>I'm working with some values from WikiPedia that are in some cases Million of years ago (Like the formation of the moon, which WikiData reports as being formed: "-4527000000-01-01T00:00:00Z". In other case I'm simply looking at years that might be 10000 B.C.  etc., still expressed as "-10000-01-01T00:00:00Z".</p>
  
  <p>As far as I could figure out testing NodaTime, and reading the documentation, these  ancient years are not supported (OR I overlooked something). For example, this fails:</p>
  
  <pre><code>OffsetDateTime defaultValue = new OffsetDateTime(new LocalDateTime(77, 1, 1, 0, 0), Offset.Zero);
  var pattern = OffsetDateTimePattern.Create("yyyy-MM-ddTHH:mm:ss'Z'", CultureInfo.InvariantCulture, defaultValue);
  string P = "-1000-01-25T20:34:25Z";
  var result = pattern.Parse(P);
  
  NodaTime.Text.UnparsableValueException: The value string includes a negative value where only a non-negative one is allowed. Value being parsed: '^-1000-01-25T20:34:25Z'. (^ indicates error position.)
     at NodaTime.Text.ParseResult`1.GetValueOrThrow() in C:\Users\jon\Test\Projects\nodatime\build\releasebuild\src\NodaTime\Text\ParseResult.cs:line 81
     at TryNodaTime.Program.Main(String[] args
  </code></pre>
  
  <p>using sing this string works fine btw: string P = "1000-01-25T20:34:25Z";</p>
  
  <p>I'm hoping I just overlooked something obvious as to handle very large old dates/years. Other examples includes old cities btw, which have exact date from long before year 0.</p>
  
  <p>Guidance on how to handle these would be greatly appreciated.</p>
  
  <p>EDIT: Found this example, which requires me to first detect the year manually, and then use LocalDate if it's negative, however, doesn't solve the larger issue here as it fails below -9999:</p>
  
  <pre><code>LocalDate BCDATE = new LocalDate(Era.BeforeCommon, -15000, 10, 1);
  Console.WriteLine($"BC: {BCDATE}");
  </code></pre>