Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ TryCreateDateTime()

static bool System.Text.Json.JsonHelpers.TryCreateDateTime ( DateTimeParseData parseData,
DateTimeKind kind,
out DateTime value )
inlinestaticprivate

Definition at line 378 of file JsonHelpers.cs.

379 {
380 if (parseData.Year == 0)
381 {
382 value = default(DateTime);
383 return false;
384 }
385 if ((uint)(parseData.Month - 1) >= 12u)
386 {
387 value = default(DateTime);
388 return false;
389 }
390 uint num = (uint)(parseData.Day - 1);
391 if (num >= 28 && num >= DateTime.DaysInMonth(parseData.Year, parseData.Month))
392 {
393 value = default(DateTime);
394 return false;
395 }
396 if ((uint)parseData.Hour > 23u)
397 {
398 value = default(DateTime);
399 return false;
400 }
401 if ((uint)parseData.Minute > 59u)
402 {
403 value = default(DateTime);
404 return false;
405 }
406 if ((uint)parseData.Second > 59u)
407 {
408 value = default(DateTime);
409 return false;
410 }
411 int[] array = (DateTime.IsLeapYear(parseData.Year) ? s_daysToMonth366 : s_daysToMonth365);
412 int num2 = parseData.Year - 1;
413 int num3 = num2 * 365 + num2 / 4 - num2 / 100 + num2 / 400 + array[parseData.Month - 1] + parseData.Day - 1;
414 long num4 = num3 * 864000000000L;
415 int num5 = parseData.Hour * 3600 + parseData.Minute * 60 + parseData.Second;
416 num4 += (long)num5 * 10000000L;
417 num4 += parseData.Fraction;
418 value = new DateTime(num4, kind);
419 return true;
420 }
static readonly int[] s_daysToMonth366
static readonly int[] s_daysToMonth365

References System.array, System.Text.Json.DateTime, System.DateTime.DaysInMonth(), System.Text.Json.Dictionary, System.DateTime.IsLeapYear(), System.L, System.Text.Json.JsonHelpers.s_daysToMonth365, System.Text.Json.JsonHelpers.s_daysToMonth366, and System.value.

Referenced by System.Text.Json.JsonHelpers.TryCreateDateTimeOffset(), System.Text.Json.JsonHelpers.TryCreateDateTimeOffsetInterpretingDataAsLocalTime(), and System.Text.Json.JsonHelpers.TryParseAsISO().