13[
TypeForwardedFrom(
"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
14public readonly
struct DateTime :
IComparable,
ISpanFormattable,
IFormattable,
IConvertible,
IComparable<DateTime>,
IEquatable<DateTime>,
ISerializable,
IAdditionOperators<DateTime, TimeSpan, DateTime>,
IAdditiveIdentity<DateTime, TimeSpan>,
IComparisonOperators<DateTime, DateTime>,
IEqualityOperators<DateTime, DateTime>,
IMinMaxValue<DateTime>,
ISpanParseable<DateTime>,
IParseable<DateTime>,
ISubtractionOperators<DateTime, TimeSpan, DateTime>,
ISubtractionOperators<DateTime, DateTime, TimeSpan>
25 0
u, 31
u, 59
u, 90
u, 120
u, 151
u, 181
u, 212
u, 243
u, 273
u,
31 0
u, 31
u, 60
u, 91
u, 121
u, 152
u, 182
u, 213
u, 244
u, 274
u,
51 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
57 31, 29, 31, 30, 31, 30, 31, 31, 30, 31,
110 if ((ulong)num <= 3155378975999999999
uL)
118 return new DateTime((num < 0) ? 9223372036854775808
uL : 12378751012854775807
uL);
132 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
135 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
138 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
152 if (
num3 < 3000000000
u)
164 if ((ulong)ticks > 3155378975999999999
uL)
183 if ((ulong)ticks > 3155378975999999999
uL)
191 _dateData = (ulong)ticks | ((ulong)(uint)kind << 62);
196 if ((ulong)ticks > 3155378975999999999
uL)
234 :
this(
year, month, day, 0, 0, 0, calendar)
238 public DateTime(
int year,
int month,
int day,
int hour,
int minute,
int second)
245 this =
new DateTime(
year, month, day, hour, minute, 59);
258 _dateData = num | (ulong)((
long)kind << 62);
262 this =
new DateTime(
year, month, day, hour, minute, 59, kind);
269 if (calendar ==
null)
278 this =
new DateTime(
year, month, day, hour, minute, 59, calendar);
315 _dateData = num | (ulong)((
long)kind << 62);
326 if (calendar ==
null)
341 if (calendar ==
null)
386 if (!(name ==
"ticks"))
388 if (name ==
"dateData")
407 if (
UTicks > 3155378975999999999
L)
420 double num =
value * (double)scale + ((
value >= 0.0) ? 0.5 : (-0.5));
464 int num4 = (int)((uint)(
num3 - 1) / 12
u);
470 num +=
num3 / 12 - 1;
496 if (num > 3155378975999999999
L)
506 if (num > 3155378975999999999
L)
528 int num3 = month - 1;
548 long ticks =
t1.Ticks;
587 if ((uint)day >
array[month] -
array[month - 1])
592 return (ulong)num * 864000000000
uL;
599 uint
num2 = num / 100;
600 return num * 1461 / 4 -
num2 +
num2 / 4;
604 private static ulong
TimeToTicks(
int hour,
int minute,
int second)
606 if ((uint)hour >= 24
u || (uint)minute >= 60
u || (uint)second >= 60
u)
610 int num = hour * 3600 + minute * 60 + second;
611 return (ulong)(uint)num * 10000000
uL;
635 if (!(
value < 2958466.0) || !(
value > -657435.0))
639 long num = (long)(
value * 86400000.0 + ((
value >= 0.0) ? 0.5 : (-0.5)));
642 num -= num % 86400000 * 2;
644 num += 59926435200000
L;
675 long num =
dateData & 0x3FFFFFFFFFFFFFFF
L;
676 if (num > 4611685154427387904
L)
678 num -= 4611686018427387904
L;
686 else if (num > 3155378975999999999
L)
698 num += 864000000000
L;
700 if ((ulong)num > 3155378975999999999
uL)
728 ulong num = (ulong)(
fileTime + 504911232000000000
L);
762 return new DateTime(
value.UTicks | (ulong)((
long)kind << 62));
774 num = 4611686018427387904
L + num;
776 return num |
long.MinValue;
783 uint num = (uint)(
UTicks / 864000000000
L);
784 uint
num2 = num / 146097;
785 num -=
num2 * 146097;
786 uint
num3 = num / 36524;
792 uint
num4 = num / 1461;
794 uint
num5 = num / 365;
806 return (
int)(num + 1);
822 uint num = (uint)(
UTicks / 864000000000
L);
823 uint
num2 = num / 146097;
824 num -=
num2 * 146097;
825 uint
num3 = num / 36524;
831 uint
num4 = num / 1461;
833 uint
num5 = num / 365;
852 ulong num =
UTicks / 10000000;
853 ulong
num2 = num / 60;
854 second = (int)(num -
num2 * 60);
857 hour = (int)((uint)
num3 % 24);
863 ulong num =
UTicks / 10000;
864 ulong
num2 = num / 1000;
870 hour = (int)((uint)
num4 % 24);
877 ulong num =
uTicks / 10000000;
879 ulong
num2 = num / 60;
880 second = (int)(num -
num2 * 60);
883 hour = (int)((uint)
num3 % 24);
889 return (
int)ticks ^ (int)(ticks >> 32);
904 if (((uint)
year & 3
u) != 0)
912 if ((uint)
year % 25
u == 0)
1010 if (num > 3155378975999999999
L)
1023 if (
value < 864000000000
L)
1025 value += 599264352000000000
L;
1027 if (
value < 31241376000000000
L)
1031 long num = (
value - 599264352000000000
L) / 10000;
1034 long num2 = num % 86400000;
1037 num -= (86400000 +
num2) * 2;
1040 return (
double)num / 86400000.0;
1060 num -= 504911232000000000
L;
1077 long num =
Ticks + ticks;
1078 if ((ulong)num <= 3155378975999999999
uL)
1086 return new DateTime((num < 0) ? 9223372036854775808
uL : 12378751012854775807
uL);
1174 if (
s ==
null ||
format ==
null)
1207 ulong num = (ulong)(
d.Ticks + t.
_ticks);
1208 if (num > 3155378975999999999
L)
1212 return new DateTime(num |
d.InternalKind);
1217 ulong num = (ulong)(
d.Ticks - t.
_ticks);
1218 if (num > 3155378975999999999
L)
1222 return new DateTime(num |
d.InternalKind);
1372 if ((uint)hour >= 24
u || (uint)minute >= 60
u || (uint)
millisecond >= 1000
u)
1377 if ((uint)day >
array[month] -
array[month - 1])
1381 ulong num = (ulong)(uint)((int)(
DaysToYear((uint)
year) +
array[month - 1]) + day - 1) * 864000000000
uL;
1382 if ((uint)second < 60
u)
1398 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1401 return left + right;
1404 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1407 return left < right;
1410 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1413 return left <= right;
1416 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1419 return left > right;
1422 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1425 return left >= right;
1428 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1431 return left == right;
1434 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1437 return left != right;
1440 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1446 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1452 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1458 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1464 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1467 return left - right;
1470 [
RequiresPreviewFeatures(
"Generic Math is in preview.", Url =
"https://aka.ms/dotnet-warnings/generic-math-preview")]
1473 return left - right;
1540 return num + (uint)
tick;
1545 uint
year = time.Year;
1550 num3 += (ulong)(time.Hour * 36000000000
L);
1552 uint second = time.Second;
1558 num3 += 4611686019027387903
L;
1570 for (
int i = 0; i < 10; i++)
1594 if (time.Second >= 60)
1598 ulong
num2 = num + 3000000000
u;
1624 if (num -
num3 >= 3000000000
u)
1632 OSFileTimeTicksAtStartOfValidityWindow =
num3,
1633 DotnetDateDataAtStartOfValidityWindow =
num4
static unsafe BOOL TzSpecificLocalTimeToSystemTime(IntPtr lpTimeZoneInformation, SYSTEMTIME *lpLocalTime, SYSTEMTIME *lpUniversalTime)
static unsafe BOOL FileTimeToSystemTime(ulong *lpFileTime, SYSTEMTIME *lpSystemTime)
static IntPtr LoadLibraryEx(string libFilename, IntPtr reserved, int flags)
static unsafe void GetSystemTime(SYSTEMTIME *lpSystemTime)
static unsafe BOOL SystemTimeToFileTime(SYSTEMTIME *lpSystemTime, ulong *lpFileTime)
static unsafe uint NtQuerySystemInformation(int SystemInformationClass, void *SystemInformation, uint SystemInformationLength, uint *ReturnLength)
static long ToInt64(object? value)
static ulong ToUInt64(object? value)
static object DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
static bool TryParseExactMultiple(ReadOnlySpan< char > s, string[] formats, DateTimeFormatInfo dtfi, DateTimeStyles style, out DateTime result, out TimeSpan offset)
static DateTime ParseExact(ReadOnlySpan< char > s, ReadOnlySpan< char > format, DateTimeFormatInfo dtfi, DateTimeStyles style)
static bool TryParse(ReadOnlySpan< char > s, DateTimeFormatInfo dtfi, DateTimeStyles styles, out DateTime result)
static DateTime Parse(ReadOnlySpan< char > s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
static DateTime ParseExactMultiple(ReadOnlySpan< char > s, string[] formats, DateTimeFormatInfo dtfi, DateTimeStyles style)
static bool TryParseExact(ReadOnlySpan< char > s, ReadOnlySpan< char > format, DateTimeFormatInfo dtfi, DateTimeStyles style, out DateTime result)
ulong OSFileTimeTicksAtStartOfValidityWindow
ulong DotnetDateDataAtStartOfValidityWindow
virtual DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond)
static CultureInfo CurrentCulture
static CultureInfo InvariantCulture
static double Abs(double value)
static IntPtr GetExport(IntPtr handle, string name)
static bool TryGetExport(IntPtr handle, string name, out IntPtr address)
static string ArgumentOutOfRange_Range
static string Arg_MustBeDateTime
static string ArgumentOutOfRange_DateTimeBadMonths
static string InvalidCast_FromTo
static string ArgumentOutOfRange_AddValue
static string Argument_InvalidDateTimeKind
static string Format(string resourceFormat, object p1)
static string ArgumentOutOfRange_DateTimeBadYears
static string Serialization_DateTimeTicksOutOfRange
static string Arg_OleAutDateScale
static string ArgumentOutOfRange_DateArithmetic
static string Argument_DateTimeBadBinaryData
static string ArgumentOutOfRange_FileTimeInvalid
static string Serialization_MissingDateTimeData
static string ArgumentOutOfRange_DateTimeBadTicks
static string Arg_OleAutDateInvalid
static void Write(ref bool location, bool value)
static void ThrowArgumentOutOfRange_Month(int month)
static void ThrowArgumentOutOfRange_Year()
static void ThrowArgumentNullException(string name)
static void ThrowArgumentOutOfRange_BadYearMonthDay()
static void ThrowArgumentOutOfRange_BadHourMinuteSecond()
static TimeZoneInfo Local
static TimeSpan GetUtcOffsetFromUtc(DateTime time, TimeZoneInfo zone)
static TimeSpan GetLocalUtcOffset(DateTime dateTime, TimeZoneInfoOptions flags)
static DateTime ConvertTimeToUtc(DateTime dateTime)
static TimeSpan GetDateTimeNowUtcOffsetFromUtc(DateTime time, out bool isAmbiguousLocalDst)
static TResult AdditiveIdentity
short ToInt16(IFormatProvider? provider)
char ToChar(IFormatProvider? provider)
byte ToByte(IFormatProvider? provider)
decimal ToDecimal(IFormatProvider? provider)
object ToType(Type conversionType, IFormatProvider? provider)
uint ToUInt32(IFormatProvider? provider)
DateTime ToDateTime(IFormatProvider? provider)
int ToInt32(IFormatProvider? provider)
long ToInt64(IFormatProvider? provider)
ushort ToUInt16(IFormatProvider? provider)
double ToDouble(IFormatProvider? provider)
float ToSingle(IFormatProvider? provider)
sbyte ToSByte(IFormatProvider? provider)
ulong ToUInt64(IFormatProvider? provider)
bool ToBoolean(IFormatProvider? provider)
static bool TryParse([NotNullWhen(true)] string? s, IFormatProvider? provider, out TSelf result)
static TSelf Parse(string s, IFormatProvider? provider)
static bool TryParse(ReadOnlySpan< char > s, IFormatProvider? provider, out TSelf result)
static TSelf Parse(ReadOnlySpan< char > s, IFormatProvider? provider)
void GetObjectData(SerializationInfo info, StreamingContext context)
override int GetHashCode()
static DateTime ParseExact(string s, string format, IFormatProvider? provider, DateTimeStyles style)
DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar, DateTimeKind kind)
TimeSpan Subtract(DateTime value)
static unsafe bool IsValidTimeWithLeapSeconds(int year, int month, int day, int hour, int minute, DateTimeKind kind)
static ulong TimeToTicks(int hour, int minute, int second, int millisecond)
static double TicksToOADate(long value)
DateTime(int year, int month, int day, Calendar calendar)
static bool Equals(DateTime t1, DateTime t2)
void GetTimePrecise(out int hour, out int minute, out int second, out int tick)
string[] GetDateTimeFormats()
static bool operator==(DateTime d1, DateTime d2)
DateTime Subtract(TimeSpan value)
static DateTime ParseExact(string s, string[] formats, IFormatProvider? provider, DateTimeStyles style)
static DateTime UnsafeCreate(long ticks)
static DateTime FromOADate(double d)
static void ThrowDateArithmetic(int param)
static ulong TimeToTicks(int hour, int minute, int second)
DateTime(int year, int month, int day, int hour, int minute, int second)
static readonly DateTime UnixEpoch
static DateTime IMinMaxValue< DateTime >. MaxValue
static DateTime FromFileTime(long fileTime)
DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond)
static readonly DateTime MaxValue
static readonly DateTime MinValue
static DateTime Parse(string s, IFormatProvider? provider, DateTimeStyles styles)
string[] GetDateTimeFormats(IFormatProvider? provider)
static unsafe readonly delegate *unmanaged[SuppressGCTransition]< ulong *, void > s_pfnGetSystemTimeAsFileTime
static bool TryParse(ReadOnlySpan< char > s, out DateTime result)
DateTime ToUniversalTime()
static DateTime CreateDateTimeFromSystemTime(in Interop.Kernel32.SYSTEMTIME time, ulong hundredNanoSecond)
void ValidateLeapSecond()
static int Compare(DateTime t1, DateTime t2)
static void ThrowTicksOutOfRange()
string ToString(IFormatProvider? provider)
static Exception InvalidCast(string to)
DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, DateTimeKind kind)
static void ThrowMillisecondOutOfRange()
static bool operator<(DateTime t1, DateTime t2)
static DateTime operator+(DateTime d, TimeSpan t)
DateTime(int year, int month, int day)
DateTime AddSeconds(double value)
static unsafe DateTime UtcNow
bool TryAddTicks(long value, out DateTime result)
static DateTime ParseExact(string s, string format, IFormatProvider? provider)
static unsafe DateTime UpdateLeapSecondCacheAndReturnUtcNow()
DateTime(int year, int month, int day, int hour, int minute, int second, DateTimeKind kind)
static LeapSecondCache s_leapSecondCache
string[] GetDateTimeFormats(char format, IFormatProvider? provider)
static unsafe ulong ToFileTimeLeapSecondsAware(long ticks)
static DateTime Parse(string s, IFormatProvider? provider)
int CompareTo(DateTime value)
static ReadOnlySpan< byte > DaysInMonth365
DateTime AddMinutes(double value)
bool TryFormat(Span< char > destination, out int charsWritten, ReadOnlySpan< char > format=default(ReadOnlySpan< char >), IFormatProvider? provider=null)
static DateTime IMinMaxValue< DateTime >. MinValue
string[] GetDateTimeFormats(char format)
DateTime(long ticks, DateTimeKind kind, bool isAmbiguousDst)
static DateTime Parse(ReadOnlySpan< char > s, IFormatProvider? provider=null, DateTimeStyles styles=DateTimeStyles.None)
DateTime(int year, int month, int day, int hour, int minute, int second, Calendar calendar)
DateTime AddHours(double value)
static ulong DateToTicks(int year, int month, int day)
static bool TryParseExact(ReadOnlySpan< char > s, ReadOnlySpan< char > format, IFormatProvider? provider, DateTimeStyles style, out DateTime result)
DateTime AddYears(int value)
static DateTime SpecifyKind(DateTime value, DateTimeKind kind)
static long DoubleDateToTicks(double value)
static bool TryCreate(int year, int month, int day, int hour, int minute, int second, int millisecond, out DateTime result)
DateTime AddMonths(int months)
string ToLongTimeString()
static bool operator<=(DateTime t1, DateTime t2)
static bool TryParseExact([NotNullWhen(true)] string? s, [NotNullWhen(true)] string? format, IFormatProvider? provider, DateTimeStyles style, out DateTime result)
static bool TryParse([NotNullWhen(true)] string? s, out DateTime result)
DateTime AddMilliseconds(double value)
static int DaysInMonth(int year, int month)
DateTime Add(double value, int scale)
override string ToString()
static DateTime FromFileTimeUtc(long fileTime)
static bool TryParse([NotNullWhen(true)] string? s, IFormatProvider? provider, DateTimeStyles styles, out DateTime result)
static DateTime FromBinary(long dateData)
static readonly uint[] s_daysToMonth366
static bool IsLeapYear(int year)
static ReadOnlySpan< byte > DaysInMonth366
override bool Equals([NotNullWhen(true)] object? value)
DateTime AddTicks(long value)
string ToString(string? format, IFormatProvider? provider)
bool IsDaylightSavingTime()
static bool operator>=(DateTime t1, DateTime t2)
DateTime(long ticks, DateTimeKind kind)
static uint DaysToYear(uint year)
static DateTime ParseExact(ReadOnlySpan< char > s, ReadOnlySpan< char > format, IFormatProvider? provider, DateTimeStyles style=DateTimeStyles.None)
static bool TryParseExact(ReadOnlySpan< char > s, [NotNullWhen(true)] string?[]? formats, IFormatProvider? provider, DateTimeStyles style, out DateTime result)
static readonly uint[] s_daysToMonth365
string ToShortTimeString()
static bool TryParse(ReadOnlySpan< char > s, IFormatProvider? provider, DateTimeStyles styles, out DateTime result)
bool IsAmbiguousDaylightSavingTime()
void GetDate(out int year, out int month, out int day)
void GetTime(out int hour, out int minute, out int second)
int CompareTo(object? value)
static DateTime Parse(string s)
DateTime(SerializationInfo info, StreamingContext context)
string ToLongDateString()
string ToString(string? format)
static DateTime operator-(DateTime d, TimeSpan t)
DateTime AddDays(double value)
void GetTime(out int hour, out int minute, out int second, out int millisecond)
static unsafe bool SystemSupportsLeapSeconds()
static bool operator!=(DateTime d1, DateTime d2)
static DateTime ParseExact(ReadOnlySpan< char > s, string[] formats, IFormatProvider? provider, DateTimeStyles style=DateTimeStyles.None)
static bool TryParseExact([NotNullWhen(true)] string? s, [NotNullWhen(true)] string?[]? formats, IFormatProvider? provider, DateTimeStyles style, out DateTime result)
static void ThrowInvalidKind()
int GetDatePart(int part)
bool Equals(DateTime value)
static unsafe delegate *unmanaged[SuppressGCTransition]< ulong *, void > GetGetSystemTimeAsFileTimeFnPtr()
static readonly bool s_systemSupportsLeapSeconds
static unsafe DateTime FromFileTimeLeapSecondsAware(ulong fileTime)
static bool operator>(DateTime t1, DateTime t2)
DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar)
string ToShortDateString()
DateTime Add(TimeSpan value)
static readonly IntPtr Zero