diff options
Diffstat (limited to 'src/mscorlib/corefx/System/Globalization/InternalGlobalizationHelper.cs')
-rw-r--r-- | src/mscorlib/corefx/System/Globalization/InternalGlobalizationHelper.cs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/mscorlib/corefx/System/Globalization/InternalGlobalizationHelper.cs b/src/mscorlib/corefx/System/Globalization/InternalGlobalizationHelper.cs new file mode 100644 index 0000000000..0a4e6f0600 --- /dev/null +++ b/src/mscorlib/corefx/System/Globalization/InternalGlobalizationHelper.cs @@ -0,0 +1,50 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; + +namespace System.Globalization +{ + internal class InternalGloablizationHelper + { + // Copied from the TimeSpan to be used inside the globalization code and avoid internal dependancy on TimeSpan class + internal static long TimeToTicks(int hour, int minute, int second) + { + // totalSeconds is bounded by 2^31 * 2^12 + 2^31 * 2^8 + 2^31, + // which is less than 2^44, meaning we won't overflow totalSeconds. + long totalSeconds = (long)hour * 3600 + (long)minute * 60 + (long)second; + if (totalSeconds > MaxSeconds || totalSeconds < MinSeconds) + throw new ArgumentOutOfRangeException(null, SR.Overflow_TimeSpanTooLong); + return totalSeconds * TicksPerSecond; + } + + + // + // Define needed constants so globalization code can be independant from any other types + // + + internal const long TicksPerMillisecond = 10000; + internal const long TicksPerTenthSecond = TicksPerMillisecond * 100; + internal const long TicksPerSecond = TicksPerMillisecond * 1000; // 10,000,000 + internal const long MaxSeconds = Int64.MaxValue / TicksPerSecond; + internal const long MinSeconds = Int64.MinValue / TicksPerSecond; + private const int DaysPerYear = 365; + private const int DaysPer4Years = DaysPerYear * 4 + 1; // 1461 + private const int DaysPer100Years = DaysPer4Years * 25 - 1; // 36524 + private const int DaysPer400Years = DaysPer100Years * 4 + 1; // 146097 + private const int DaysTo10000 = DaysPer400Years * 25 - 366; // 3652059 + private const long TicksPerMinute = TicksPerSecond * 60; + private const long TicksPerHour = TicksPerMinute * 60; + private const long TicksPerDay = TicksPerHour * 24; + internal const long MaxTicks = DaysTo10000 * TicksPerDay - 1; + internal const long MinTicks = 0; + internal const long MaxMilliSeconds = Int64.MaxValue / TicksPerMillisecond; + internal const long MinMilliSeconds = Int64.MinValue / TicksPerMillisecond; + + internal const int StringBuilderDefaultCapacity = 16; + + internal const Int64 MaxOffset = TimeSpan.TicksPerHour * 14; + internal const Int64 MinOffset = -MaxOffset; + } +} |