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

◆ TryFormatO()

static bool System.DateTimeFormat.TryFormatO ( DateTime dateTime,
TimeSpan offset,
Span< char > destination,
out int charsWritten )
inlinestaticprivate

Definition at line 869 of file DateTimeFormat.cs.

870 {
871 int num = 27;
873 if (offset.Ticks == long.MinValue)
874 {
875 dateTimeKind = dateTime.Kind;
876 switch (dateTimeKind)
877 {
878 case DateTimeKind.Local:
879 offset = TimeZoneInfo.Local.GetUtcOffset(dateTime);
880 num += 6;
881 break;
882 case DateTimeKind.Utc:
883 num++;
884 break;
885 }
886 }
887 else
888 {
889 num += 6;
890 }
891 if (destination.Length < num)
892 {
893 charsWritten = 0;
894 return false;
895 }
896 charsWritten = num;
897 _ = ref destination[26];
898 dateTime.GetDate(out var year, out var month, out var day);
899 dateTime.GetTimePrecise(out var hour, out var minute, out var second, out var tick);
901 destination[4] = '-';
902 WriteTwoDecimalDigits((uint)month, destination, 5);
903 destination[7] = '-';
904 WriteTwoDecimalDigits((uint)day, destination, 8);
905 destination[10] = 'T';
906 WriteTwoDecimalDigits((uint)hour, destination, 11);
907 destination[13] = ':';
908 WriteTwoDecimalDigits((uint)minute, destination, 14);
909 destination[16] = ':';
910 WriteTwoDecimalDigits((uint)second, destination, 17);
911 destination[19] = '.';
912 WriteDigits((uint)tick, destination.Slice(20, 7));
913 switch (dateTimeKind)
914 {
915 case DateTimeKind.Local:
916 {
917 int num2 = (int)(offset.Ticks / 600000000);
918 char c;
919 if (num2 < 0)
920 {
921 c = '-';
922 num2 = -num2;
923 }
924 else
925 {
926 c = '+';
927 }
928 int result;
929 int value = Math.DivRem(num2, 60, out result);
930 WriteTwoDecimalDigits((uint)result, destination, 31);
931 destination[30] = ':';
933 destination[27] = c;
934 break;
935 }
936 case DateTimeKind.Utc:
937 destination[27] = 'Z';
938 break;
939 }
940 return true;
941 }
static void WriteTwoDecimalDigits(uint value, Span< char > destination, int offset)
static void WriteDigits(ulong value, Span< char > buffer)
static void WriteFourDecimalDigits(uint value, Span< char > buffer, int startingIndex=0)

References System.destination, System.Math.DivRem(), System.TimeZoneInfo.Local, System.offset, System.value, System.DateTimeFormat.WriteDigits(), System.DateTimeFormat.WriteFourDecimalDigits(), System.DateTimeFormat.WriteTwoDecimalDigits(), and System.year.

Referenced by System.DateTimeFormat.Format(), and System.DateTimeFormat.TryFormat().