Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XsdDateTime.cs
Go to the documentation of this file.
1using System.Text;
2
3namespace System.Xml.Schema;
4
5internal struct XsdDateTime
6{
7 private enum DateTimeTypeCode
8 {
10 Time,
11 Date,
13 GYear,
15 GDay,
16 GMonth,
18 }
19
20 private enum XsdDateTimeKind
21 {
23 Zulu,
26 }
27
28 private struct Parser
29 {
31
32 public int year;
33
34 public int month;
35
36 public int day;
37
38 public int hour;
39
40 public int minute;
41
42 public int second;
43
44 public int fraction;
45
47
48 public int zoneHour;
49
50 public int zoneMinute;
51
52 private string _text;
53
54 private int _length;
55
56 private static readonly int[] s_power10 = new int[7] { -1, 10, 100, 1000, 10000, 100000, 1000000 };
57
58 public bool Parse(string text, XsdDateTimeFlags kinds)
59 {
60 _text = text;
61 _length = text.Length;
62 int i;
63 for (i = 0; i < _length && char.IsWhiteSpace(text[i]); i++)
64 {
65 }
66 if (Test(kinds, XsdDateTimeFlags.DateTime | XsdDateTimeFlags.Date | XsdDateTimeFlags.XdrDateTimeNoTz | XsdDateTimeFlags.XdrDateTime) && ParseDate(i))
67 {
69 {
70 typeCode = DateTimeTypeCode.DateTime;
71 return true;
72 }
74 {
76 return true;
77 }
79 {
80 typeCode = DateTimeTypeCode.XdrDateTime;
81 return true;
82 }
83 if (Test(kinds, XsdDateTimeFlags.XdrDateTimeNoTz))
84 {
85 if (!ParseChar(i + s_lzyyyy_MM_dd, 'T'))
86 {
87 typeCode = DateTimeTypeCode.XdrDateTime;
88 return true;
89 }
91 {
92 typeCode = DateTimeTypeCode.XdrDateTime;
93 return true;
94 }
95 }
96 }
98 {
99 year = 1904;
100 month = 1;
101 day = 1;
103 return true;
104 }
105 if (Test(kinds, XsdDateTimeFlags.XdrTimeNoTz) && ParseTimeAndWhitespace(i))
106 {
107 year = 1904;
108 month = 1;
109 day = 1;
111 return true;
112 }
113 if (Test(kinds, XsdDateTimeFlags.GYearMonth | XsdDateTimeFlags.GYear) && Parse4Dig(i, ref year) && 1 <= year)
114 {
115 if (Test(kinds, XsdDateTimeFlags.GYearMonth) && ParseChar(i + s_lzyyyy, '-') && Parse2Dig(i + s_lzyyyy_, ref month) && 1 <= month && month <= 12 && ParseZoneAndWhitespace(i + s_lzyyyy_MM))
116 {
117 day = 1;
118 typeCode = DateTimeTypeCode.GYearMonth;
119 return true;
120 }
122 {
123 month = 1;
124 day = 1;
126 return true;
127 }
128 }
129 if (Test(kinds, XsdDateTimeFlags.GMonthDay | XsdDateTimeFlags.GMonth) && ParseChar(i, '-') && ParseChar(i + s_Lz_, '-') && Parse2Dig(i + s_Lz__, ref month) && 1 <= month && month <= 12)
130 {
131 if (Test(kinds, XsdDateTimeFlags.GMonthDay) && ParseChar(i + s_lz__mm, '-') && Parse2Dig(i + s_lz__mm_, ref day) && 1 <= day && day <= DateTime.DaysInMonth(1904, month) && ParseZoneAndWhitespace(i + s_lz__mm_dd))
132 {
133 year = 1904;
134 typeCode = DateTimeTypeCode.GMonthDay;
135 return true;
136 }
138 {
139 year = 1904;
140 day = 1;
141 typeCode = DateTimeTypeCode.GMonth;
142 return true;
143 }
144 }
145 if (Test(kinds, XsdDateTimeFlags.GDay) && ParseChar(i, '-') && ParseChar(i + s_Lz_, '-') && ParseChar(i + s_Lz__, '-') && Parse2Dig(i + s_Lz___, ref day) && 1 <= day && day <= DateTime.DaysInMonth(1904, 1) && ParseZoneAndWhitespace(i + s_lz___dd))
146 {
147 year = 1904;
148 month = 1;
150 return true;
151 }
152 return false;
153 }
154
155 private bool ParseDate(int start)
156 {
157 if (Parse4Dig(start, ref year) && 1 <= year && ParseChar(start + s_lzyyyy, '-') && Parse2Dig(start + s_lzyyyy_, ref month) && 1 <= month && month <= 12 && ParseChar(start + s_lzyyyy_MM, '-') && Parse2Dig(start + s_lzyyyy_MM_, ref day) && 1 <= day)
158 {
159 return day <= DateTime.DaysInMonth(year, month);
160 }
161 return false;
162 }
163
165 {
167 {
168 return true;
169 }
170 return false;
171 }
172
174 {
175 if (ParseTime(ref start))
176 {
177 while (start < _length)
178 {
179 start++;
180 }
181 return start == _length;
182 }
183 return false;
184 }
185
186 private bool ParseTime(ref int start)
187 {
189 {
191 if (ParseChar(start, '.'))
192 {
193 fraction = 0;
194 int num = 0;
195 int num2 = 0;
196 while (++start < _length)
197 {
198 int num3 = _text[start] - 48;
199 if (9u < (uint)num3)
200 {
201 break;
202 }
203 if (num < 7)
204 {
205 fraction = fraction * 10 + num3;
206 }
207 else if (num == 7)
208 {
209 if (5 < num3)
210 {
211 num2 = 1;
212 }
213 else if (num3 == 5)
214 {
215 num2 = -1;
216 }
217 }
218 else if (num2 < 0 && num3 != 0)
219 {
220 num2 = 1;
221 }
222 num++;
223 }
224 if (num < 7)
225 {
226 if (num == 0)
227 {
228 return false;
229 }
230 fraction *= s_power10[7 - num];
231 }
232 else
233 {
234 if (num2 < 0)
235 {
236 num2 = fraction & 1;
237 }
238 fraction += num2;
239 }
240 }
241 return true;
242 }
243 hour = 0;
244 return false;
245 }
246
248 {
249 if (start < _length)
250 {
251 char c = _text[start];
252 if (c == 'Z' || c == 'z')
253 {
254 kind = XsdDateTimeKind.Zulu;
255 start++;
256 }
257 else if (start + 5 < _length && Parse2Dig(start + s_Lz_, ref zoneHour) && zoneHour <= 99 && ParseChar(start + s_lz_zz, ':') && Parse2Dig(start + s_lz_zz_, ref zoneMinute) && zoneMinute <= 99)
258 {
259 switch (c)
260 {
261 case '-':
262 kind = XsdDateTimeKind.LocalWestOfZulu;
263 start += s_lz_zz_zz;
264 break;
265 case '+':
266 kind = XsdDateTimeKind.LocalEastOfZulu;
267 start += s_lz_zz_zz;
268 break;
269 }
270 }
271 }
272 while (start < _length && char.IsWhiteSpace(_text[start]))
273 {
274 start++;
275 }
276 return start == _length;
277 }
278
279 private bool Parse4Dig(int start, ref int num)
280 {
281 if (start + 3 < _length)
282 {
283 int num2 = _text[start] - 48;
284 int num3 = _text[start + 1] - 48;
285 int num4 = _text[start + 2] - 48;
286 int num5 = _text[start + 3] - 48;
287 if (0 <= num2 && num2 < 10 && 0 <= num3 && num3 < 10 && 0 <= num4 && num4 < 10 && 0 <= num5 && num5 < 10)
288 {
289 num = ((num2 * 10 + num3) * 10 + num4) * 10 + num5;
290 return true;
291 }
292 }
293 return false;
294 }
295
296 private bool Parse2Dig(int start, ref int num)
297 {
298 if (start + 1 < _length)
299 {
300 int num2 = _text[start] - 48;
301 int num3 = _text[start + 1] - 48;
302 if (0 <= num2 && num2 < 10 && 0 <= num3 && num3 < 10)
303 {
304 num = num2 * 10 + num3;
305 return true;
306 }
307 }
308 return false;
309 }
310
311 private bool ParseChar(int start, char ch)
312 {
313 if (start < _length)
314 {
315 return _text[start] == ch;
316 }
317 return false;
318 }
319
320 private static bool Test(XsdDateTimeFlags left, XsdDateTimeFlags right)
321 {
322 return (left & right) != 0;
323 }
324 }
325
326 private DateTime _dt;
327
328 private uint _extra;
329
330 private static readonly int s_lzyyyy = "yyyy".Length;
331
332 private static readonly int s_lzyyyy_ = "yyyy-".Length;
333
334 private static readonly int s_lzyyyy_MM = "yyyy-MM".Length;
335
336 private static readonly int s_lzyyyy_MM_ = "yyyy-MM-".Length;
337
338 private static readonly int s_lzyyyy_MM_dd = "yyyy-MM-dd".Length;
339
340 private static readonly int s_lzyyyy_MM_ddT = "yyyy-MM-ddT".Length;
341
342 private static readonly int s_lzHH = "HH".Length;
343
344 private static readonly int s_lzHH_ = "HH:".Length;
345
346 private static readonly int s_lzHH_mm = "HH:mm".Length;
347
348 private static readonly int s_lzHH_mm_ = "HH:mm:".Length;
349
350 private static readonly int s_lzHH_mm_ss = "HH:mm:ss".Length;
351
352 private static readonly int s_Lz_ = "-".Length;
353
354 private static readonly int s_lz_zz = "-zz".Length;
355
356 private static readonly int s_lz_zz_ = "-zz:".Length;
357
358 private static readonly int s_lz_zz_zz = "-zz:zz".Length;
359
360 private static readonly int s_Lz__ = "--".Length;
361
362 private static readonly int s_lz__mm = "--MM".Length;
363
364 private static readonly int s_lz__mm_ = "--MM-".Length;
365
366 private static readonly int s_lz__mm__ = "--MM--".Length;
367
368 private static readonly int s_lz__mm_dd = "--MM-dd".Length;
369
370 private static readonly int s_Lz___ = "---".Length;
371
372 private static readonly int s_lz___dd = "---dd".Length;
373
374 private static readonly int[] DaysToMonth365 = new int[13]
375 {
376 0, 31, 59, 90, 120, 151, 181, 212, 243, 273,
377 304, 334, 365
378 };
379
380 private static readonly int[] DaysToMonth366 = new int[13]
381 {
382 0, 31, 60, 91, 121, 152, 182, 213, 244, 274,
383 305, 335, 366
384 };
385
386 private static readonly XmlTypeCode[] s_typeCodes = new XmlTypeCode[8]
387 {
388 XmlTypeCode.DateTime,
389 XmlTypeCode.Time,
390 XmlTypeCode.Date,
391 XmlTypeCode.GYearMonth,
392 XmlTypeCode.GYear,
393 XmlTypeCode.GMonthDay,
394 XmlTypeCode.GDay,
396 };
397
399
401
403
404 public int Year => _dt.Year;
405
406 public int Month => _dt.Month;
407
408 public int Day => _dt.Day;
409
410 public int Hour => _dt.Hour;
411
412 public int Minute => _dt.Minute;
413
414 public int Second => _dt.Second;
415
416 public int Fraction => (int)(_dt.Ticks % 10000000);
417
418 public int ZoneHour => (int)((_extra & 0xFF00) >> 8);
419
420 public int ZoneMinute => (int)(_extra & 0xFF);
421
423 {
424 this = default(XsdDateTime);
425 Parser parser = default(Parser);
426 if (!parser.Parse(text, kinds))
427 {
429 }
431 }
432
434 {
435 this = default(XsdDateTime);
437 }
438
440 {
441 _dt = new DateTime(parser.year, parser.month, parser.day, parser.hour, parser.minute, parser.second);
442 if (parser.fraction != 0)
443 {
444 _dt = _dt.AddTicks(parser.fraction);
445 }
446 _extra = (uint)(((int)parser.typeCode << 24) | ((int)parser.kind << 16) | (parser.zoneHour << 8) | parser.zoneMinute);
447 }
448
449 internal static bool TryParse(string text, XsdDateTimeFlags kinds, out XsdDateTime result)
450 {
451 Parser parser = default(Parser);
452 if (!parser.Parse(text, kinds))
453 {
454 result = default(XsdDateTime);
455 return false;
456 }
457 result = new XsdDateTime(parser);
458 return true;
459 }
460
462 {
463 _dt = dateTime;
465 int num = 0;
466 int num2 = 0;
468 switch (dateTime.Kind)
469 {
470 case DateTimeKind.Unspecified:
471 xsdDateTimeKind = XsdDateTimeKind.Unspecified;
472 break;
473 case DateTimeKind.Utc:
475 break;
476 default:
477 {
479 if (utcOffset.Ticks < 0)
480 {
481 xsdDateTimeKind = XsdDateTimeKind.LocalWestOfZulu;
482 num = -utcOffset.Hours;
483 num2 = -utcOffset.Minutes;
484 }
485 else
486 {
487 xsdDateTimeKind = XsdDateTimeKind.LocalEastOfZulu;
488 num = utcOffset.Hours;
489 num2 = utcOffset.Minutes;
490 }
491 break;
492 }
493 }
494 _extra = (uint)(((int)dateTimeTypeCode << 24) | ((int)xsdDateTimeKind << 16) | (num << 8) | num2);
495 }
496
501
503 {
508 if (!(timeSpan.TotalMinutes < 0.0))
509 {
510 xsdDateTimeKind = ((!(timeSpan.TotalMinutes > 0.0)) ? XsdDateTimeKind.Zulu : XsdDateTimeKind.LocalEastOfZulu);
511 }
512 else
513 {
515 xsdDateTimeKind = XsdDateTimeKind.LocalWestOfZulu;
516 }
517 _extra = (uint)(((int)dateTimeTypeCode << 24) | ((int)xsdDateTimeKind << 16) | (timeSpan.Hours << 8) | timeSpan.Minutes);
518 }
519
521 {
522 return InternalKind switch
523 {
527 _ => _dt,
528 };
529 }
530
531 public static implicit operator DateTime(XsdDateTime xdt)
532 {
534 switch (xdt.InternalTypeCode)
535 {
536 case DateTimeTypeCode.GDay:
537 case DateTimeTypeCode.GMonth:
538 dateTime = new DateTime(DateTime.Now.Year, xdt.Month, xdt.Day);
539 break;
540 case DateTimeTypeCode.Time:
541 {
543 TimeSpan value = new DateTime(now.Year, now.Month, now.Day) - new DateTime(xdt.Year, xdt.Month, xdt.Day);
544 dateTime = xdt._dt.Add(value);
545 break;
546 }
547 default:
548 dateTime = xdt._dt;
549 break;
550 }
551 switch (xdt.InternalKind)
552 {
553 case XsdDateTimeKind.Zulu:
554 dateTime = new DateTime(dateTime.Ticks, DateTimeKind.Utc);
555 break;
556 case XsdDateTimeKind.LocalEastOfZulu:
557 {
558 long num = dateTime.Ticks - new TimeSpan(xdt.ZoneHour, xdt.ZoneMinute, 0).Ticks;
559 if (num < DateTime.MinValue.Ticks)
560 {
561 num += TimeZoneInfo.Local.GetUtcOffset(dateTime).Ticks;
562 if (num < DateTime.MinValue.Ticks)
563 {
564 num = DateTime.MinValue.Ticks;
565 }
566 return new DateTime(num, DateTimeKind.Local);
567 }
568 dateTime = new DateTime(num, DateTimeKind.Utc).ToLocalTime();
569 break;
570 }
571 case XsdDateTimeKind.LocalWestOfZulu:
572 {
573 long num = dateTime.Ticks + new TimeSpan(xdt.ZoneHour, xdt.ZoneMinute, 0).Ticks;
574 if (num > DateTime.MaxValue.Ticks)
575 {
576 num += TimeZoneInfo.Local.GetUtcOffset(dateTime).Ticks;
577 if (num > DateTime.MaxValue.Ticks)
578 {
579 num = DateTime.MaxValue.Ticks;
580 }
581 return new DateTime(num, DateTimeKind.Local);
582 }
583 dateTime = new DateTime(num, DateTimeKind.Utc).ToLocalTime();
584 break;
585 }
586 }
587 return dateTime;
588 }
589
590 public static implicit operator DateTimeOffset(XsdDateTime xdt)
591 {
593 switch (xdt.InternalTypeCode)
594 {
595 case DateTimeTypeCode.GDay:
596 case DateTimeTypeCode.GMonth:
597 dateTime = new DateTime(DateTime.Now.Year, xdt.Month, xdt.Day);
598 break;
599 case DateTimeTypeCode.Time:
600 {
602 TimeSpan value = new DateTime(now.Year, now.Month, now.Day) - new DateTime(xdt.Year, xdt.Month, xdt.Day);
603 dateTime = xdt._dt.Add(value);
604 break;
605 }
606 default:
607 dateTime = xdt._dt;
608 break;
609 }
610 return xdt.InternalKind switch
611 {
612 XsdDateTimeKind.LocalEastOfZulu => new DateTimeOffset(dateTime, new TimeSpan(xdt.ZoneHour, xdt.ZoneMinute, 0)),
613 XsdDateTimeKind.LocalWestOfZulu => new DateTimeOffset(dateTime, new TimeSpan(-xdt.ZoneHour, -xdt.ZoneMinute, 0)),
615 _ => new DateTimeOffset(dateTime, TimeZoneInfo.Local.GetUtcOffset(dateTime)),
616 };
617 }
618
619 public override string ToString()
620 {
622 switch (InternalTypeCode)
623 {
624 case DateTimeTypeCode.DateTime:
626 stringBuilder.Append('T');
628 break;
629 case DateTimeTypeCode.Time:
631 break;
632 case DateTimeTypeCode.Date:
634 break;
635 case DateTimeTypeCode.GYearMonth:
636 {
637 char[] array = new char[s_lzyyyy_MM];
638 IntToCharArray(array, 0, Year, 4);
639 array[s_lzyyyy] = '-';
641 stringBuilder.Append(array);
642 break;
643 }
644 case DateTimeTypeCode.GYear:
645 {
646 char[] array = new char[s_lzyyyy];
647 IntToCharArray(array, 0, Year, 4);
648 stringBuilder.Append(array);
649 break;
650 }
651 case DateTimeTypeCode.GMonthDay:
652 {
653 char[] array = new char[s_lz__mm_dd];
654 array[0] = '-';
655 array[s_Lz_] = '-';
657 array[s_lz__mm] = '-';
659 stringBuilder.Append(array);
660 break;
661 }
662 case DateTimeTypeCode.GDay:
663 {
664 char[] array = new char[s_lz___dd];
665 array[0] = '-';
666 array[s_Lz_] = '-';
667 array[s_Lz__] = '-';
669 stringBuilder.Append(array);
670 break;
671 }
672 case DateTimeTypeCode.GMonth:
673 {
674 char[] array = new char[s_lz__mm__];
675 array[0] = '-';
676 array[s_Lz_] = '-';
678 array[s_lz__mm] = '-';
679 array[s_lz__mm_] = '-';
680 stringBuilder.Append(array);
681 break;
682 }
683 }
685 return stringBuilder.ToString();
686 }
687
688 private void PrintDate(StringBuilder sb)
689 {
690 char[] array = new char[s_lzyyyy_MM_dd];
691 GetYearMonthDay(out var year, out var month, out var day);
692 IntToCharArray(array, 0, year, 4);
693 array[s_lzyyyy] = '-';
695 array[s_lzyyyy_MM] = '-';
697 sb.Append(array);
698 }
699
700 private void GetYearMonthDay(out int year, out int month, out int day)
701 {
702 long ticks = _dt.Ticks;
703 int num = (int)(ticks / 864000000000L);
704 int num2 = num / 146097;
705 num -= num2 * 146097;
706 int num3 = num / 36524;
707 if (num3 == 4)
708 {
709 num3 = 3;
710 }
711 num -= num3 * 36524;
712 int num4 = num / 1461;
713 num -= num4 * 1461;
714 int num5 = num / 365;
715 if (num5 == 4)
716 {
717 num5 = 3;
718 }
719 year = num2 * 400 + num3 * 100 + num4 * 4 + num5 + 1;
720 num -= num5 * 365;
721 int[] array = ((num5 == 3 && (num4 != 24 || num3 == 3)) ? DaysToMonth366 : DaysToMonth365);
722 month = (num >> 5) + 1;
723 while (num >= array[month])
724 {
725 month++;
726 }
727 day = num - array[month - 1] + 1;
728 }
729
730 private void PrintTime(StringBuilder sb)
731 {
732 char[] array = new char[s_lzHH_mm_ss];
734 array[s_lzHH] = ':';
736 array[s_lzHH_mm] = ':';
738 sb.Append(array);
739 int num = Fraction;
740 if (num != 0)
741 {
742 int num2 = 7;
743 while (num % 10 == 0)
744 {
745 num2--;
746 num /= 10;
747 }
748 array = new char[num2 + 1];
749 array[0] = '.';
750 IntToCharArray(array, 1, num, num2);
751 sb.Append(array);
752 }
753 }
754
755 private void PrintZone(StringBuilder sb)
756 {
757 switch (InternalKind)
758 {
759 case XsdDateTimeKind.Zulu:
760 sb.Append('Z');
761 break;
762 case XsdDateTimeKind.LocalWestOfZulu:
763 {
764 char[] array = new char[s_lz_zz_zz];
765 array[0] = '-';
767 array[s_lz_zz] = ':';
769 sb.Append(array);
770 break;
771 }
772 case XsdDateTimeKind.LocalEastOfZulu:
773 {
774 char[] array = new char[s_lz_zz_zz];
775 array[0] = '+';
777 array[s_lz_zz] = ':';
779 sb.Append(array);
780 break;
781 }
782 }
783 }
784
785 private void IntToCharArray(char[] text, int start, int value, int digits)
786 {
787 while (digits-- != 0)
788 {
789 text[start + digits] = (char)(value % 10 + 48);
790 value /= 10;
791 }
792 }
793
794 private void ShortToCharArray(char[] text, int start, int value)
795 {
796 text[start] = (char)(value / 10 + 48);
797 text[start + 1] = (char)(value % 10 + 48);
798 }
799}
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string XmlConvert_BadFormat
Definition SR.cs:370
Definition SR.cs:7
StringBuilder Append(char value, int repeatCount)
static TimeZoneInfo Local
static int LeastPosition(uint num)
Definition Bits.cs:29
TypeCode
Definition TypeCode.cs:4
TimeSpan Subtract(DateTime value)
Definition DateTime.cs:1002
static readonly DateTime MaxValue
Definition DateTime.cs:37
static readonly DateTime MinValue
Definition DateTime.cs:35
DateTime(long ticks)
Definition DateTime.cs:162
static DateTime Now
Definition DateTime.cs:103
static int DaysInMonth(int year, int month)
Definition DateTime.cs:624
DateTime AddTicks(long value)
Definition DateTime.cs:493
DateTime Add(TimeSpan value)
Definition DateTime.cs:413
TimeSpan Negate()
Definition TimeSpan.cs:238
bool ParseChar(int start, char ch)
bool ParseTimeAndZoneAndWhitespace(int start)
bool Parse4Dig(int start, ref int num)
static readonly int[] s_power10
static bool Test(XsdDateTimeFlags left, XsdDateTimeFlags right)
bool Parse(string text, XsdDateTimeFlags kinds)
bool Parse2Dig(int start, ref int num)
static readonly int s_lz__mm
void PrintDate(StringBuilder sb)
void ShortToCharArray(char[] text, int start, int value)
static bool TryParse(string text, XsdDateTimeFlags kinds, out XsdDateTime result)
static readonly int s_lz_zz_zz
void PrintZone(StringBuilder sb)
static readonly int s_lzHH_mm_
static readonly int s_lzyyyy_MM_dd
static readonly int s_lz__mm__
static readonly int s_lzHH_mm
static readonly int s_lz__mm_
void IntToCharArray(char[] text, int start, int value, int digits)
static readonly int[] DaysToMonth366
XsdDateTime(DateTime dateTime, XsdDateTimeFlags kinds)
void PrintTime(StringBuilder sb)
static readonly int s_lz_zz_
static readonly int s_lzHH
static readonly int s_lz__mm_dd
static readonly int s_lzyyyy_MM
XsdDateTime(string text, XsdDateTimeFlags kinds)
static readonly int s_lzyyyy_
static readonly int s_lz_zz
static readonly int s_Lz_
void InitiateXsdDateTime(Parser parser)
DateTimeTypeCode InternalTypeCode
static readonly int s_Lz___
static readonly int[] DaysToMonth365
XsdDateTime(DateTimeOffset dateTimeOffset, XsdDateTimeFlags kinds)
void GetYearMonthDay(out int year, out int month, out int day)
static readonly int s_lz___dd
static readonly int s_lzyyyy_MM_
XsdDateTime(DateTimeOffset dateTimeOffset)
static readonly int s_lzHH_mm_ss
static readonly int s_Lz__
static readonly int s_lzHH_
static readonly XmlTypeCode[] s_typeCodes
static readonly int s_lzyyyy_MM_ddT
static readonly int s_lzyyyy