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

◆ ParseTimeZone()

static bool System.DateTimeParse.ParseTimeZone ( ref __DTString str,
ref TimeSpan result )
inlinestaticprivate

Definition at line 731 of file DateTimeParse.cs.

732 {
733 int num = 0;
734 DTSubString subString = str.GetSubString();
735 if (subString.length != 1)
736 {
737 return false;
738 }
739 char c = subString[0];
740 if (c != '+' && c != '-')
741 {
742 return false;
743 }
744 str.ConsumeSubString(subString);
745 subString = str.GetSubString();
746 if (subString.type != DTSubStringType.Number)
747 {
748 return false;
749 }
750 int value = subString.value;
751 int hours;
752 switch (subString.length)
753 {
754 case 1:
755 case 2:
756 hours = value;
757 str.ConsumeSubString(subString);
758 subString = str.GetSubString();
759 if (subString.length == 1 && subString[0] == ':')
760 {
761 str.ConsumeSubString(subString);
762 subString = str.GetSubString();
763 if (subString.type != DTSubStringType.Number || subString.length < 1 || subString.length > 2)
764 {
765 return false;
766 }
767 num = subString.value;
768 str.ConsumeSubString(subString);
769 }
770 break;
771 case 3:
772 case 4:
773 hours = value / 100;
774 num = value % 100;
775 str.ConsumeSubString(subString);
776 break;
777 default:
778 return false;
779 }
780 if (num < 0 || num >= 60)
781 {
782 return false;
783 }
784 result = new TimeSpan(hours, num, 0);
785 if (c == '-')
786 {
787 result = result.Negate();
788 }
789 return true;
790 }

References System.DTSubString.length, System.str, System.DTSubString.type, System.DTSubString.value, and System.value.

Referenced by System.DateTimeParse.HandleTimeZone(), System.DateTimeParse.Lex(), and System.DateTimeParse.ParseISO8601().