DateTime DateTime DateTime DateTime Struct

Definition

通常、日付や時刻として表現される瞬間を表します。 Represents an instant in time, typically expressed as a date and time of day.

public value class DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System::Runtime::Serialization::ISerializable
[Serializable]
public struct DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System.Runtime.Serialization.ISerializable
type DateTime = struct
    interface IFormattable
    interface IConvertible
    interface ISerializable
Public Structure DateTime
Implements IComparable, IComparable(Of DateTime), IConvertible, IEquatable(Of DateTime), IFormattable, ISerializable
Inheritance
Attributes
SerializableAttribute
Implements

Remarks

注意

この記事の C# 例は、Try.NET インライン コード ランナーとプレイグラウンドで実行されます。The C# examples in this article run in the Try.NET inline code runner and playground. [実行] ボタンを選択すると、対話型ウィンドウで例が実行されます。Select the Run button to run an example in an interactive window. コードを実行したら、コードを変更し、[実行] をもう一度選択して変更後のコードを実行できます。Once you execute the code, you can modify it and run the modified code by selecting Run again. 変更後のコードが対話型ウィンドウで実行されるか、コンパイルできなかった場合、対話型ウィンドウにすべての C# コンパイラ エラー メッセージが表示されます。The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Try.NET インライン コード ランナーとプレイグラウンドのローカル タイム ゾーンは、協定世界時 (UTC) です。The local time zone of the Try.NET inline code runner and playground is Coordinated Universal Time, or UTC. これは、DateTimeDateTimeOffsetTimeZoneInfo 型とそのメンバーについて説明する例の、動作と出力に影響を与える可能性があります。This may affect the behavior and the output of examples that illustrate the DateTime, DateTimeOffset, and TimeZoneInfo types and their members.

この記事には、使用するいくつかの例が含まれています、DateTime型。This article includes several examples that use the DateTime type:

初期化の例 Initialization Examples
コンス トラクターを呼び出す Invoke a constructor
暗黙の既定のコンス トラクターを呼び出す Invoke the implicit default constructor
戻り値の割り当て Assignment from return value
日付と時刻を表す文字列の解析 Parsing a string that represents a date and time
日付と時刻に初期化するために Visual Basic 構文Visual Basic syntax to initialize a date and time

書式設定DateTimeオブジェクトを文字列としてFormatting DateTime objects as strings
既定の日付時刻形式を使用して、 Use the default date time format
日付と時刻を特定のカルチャを使用して書式設定します。 Format a date and time using a specific culture
標準またはカスタム書式指定文字列を使用して日付時刻を書式設定します。 Format a date time using a standard or custom format string
書式指定文字列と、特定のカルチャの両方を指定します。 Specify both a format string and a specific culture
Web サービスの ISO 8601 標準を使用して日付時刻を書式設定します。Format a date time using the ISO 8601 standard for web services

として文字列の解析DateTimeオブジェクトParsing strings as DateTime objects
使用ParseまたはTryParse日付と時刻を文字列に変換するには Use Parse or TryParse to convert a string to a date and time
使用ParseExactまたはTryParseExact既知の形式の文字列に変換するには Use ParseExact or TryParseExact to convert a string in a known format
ISO 8601 文字列から日付と時刻に変換します。Convert from the ISO 8601 string representation to a date and time

DateTime 解決方法DateTime resolution
日付と時刻の値の解像度を調べる Explore the resolution of date and time values
等しいかどうか、許容範囲内で比較します。Comparing for equality within a tolerance

カルチャと予定表Culture and calendars
カルチャ固有のカレンダーを使用して日付と時刻の値を表示します。 Display date and time values using culture specific calendars
カルチャ固有のカレンダーに従って文字列を解析します。 Parse strings according to a culture specific calendar
日付と時刻特定のカルチャのカレンダーからを初期化します。 Initialize a date and time from a specific culture's calendar
特定のカルチャの暦を使用して日付と時刻のプロパティへのアクセス Accessing date and time properties using a specific culture's calendar
カルチャ固有のカレンダーを使用して年の通算週を取得します。Retrieving the week of the year using culture specific calendars

永続性Persistence
ローカル タイム ゾーン文字列として日付と時刻の値を保持します。 Persisting date and time values as strings in the local time zone
インバリアント カルチャの日時形式で文字列として日付と時刻の値を保持します。 Persisting date and time values as strings in a culture and time invariant format
整数値として日付と時刻の値を保持します。 Persisting date and time values as integers
永続化する日付と時刻の値を使用して、 XmlSerializer Persisting date and time values using the XmlSerializer
永続化する日付と時刻の値を使用して、 BinaryFormatter Persisting date and time values using the BinaryFormatter
タイム ゾーン データ永続化する日付と時刻の値Persisting date and time values with time zone data

このセクションには多くの一般的な使用法に関するトピックが含まれています、DateTime構造体。This section contains topics for many common uses of the DateTime struct:

初期化をDateTimeオブジェクト Initializing a DateTime object
DateTime 値とその文字列表現 DateTime values and their string representations
文字列から DateTime 値の解析 Parsing DateTime values from strings
DateTime 値 DateTime values
DateTime 操作 DateTime operations
DateTime の解決 DateTime resolution
DateTime 値との予定表 DateTime values and calendars
DateTime 値の永続化 Persisting DateTime values
DateTime とします。timeSpan DateTime vs. TimeSpan
許容範囲内で等しいかどうかを比較する COM 相互運用機能に関する考慮事項Comparing for equality within tolerance COM interop considerations

DateTime値の型の日付を表すし、西暦 9999 年 12 月 31 日までの値で 00時 00分: 00 (午前 0 時)、1 月 1 日から 0001 西暦紀元 11時 59分: 59 PM、使用時間The DateTime value type represents dates and times with values ranging from 00:00:00 (midnight), January 1, 0001 Anno Domini (Common Era) through 11:59:59 P.M., December 31, 9999 A.D. (西暦)構成のグレゴリオ暦カレンダーです。(C.E.) in the Gregorian calendar.

時刻の値は、タイマー刻み 100 ナノ秒単位で測定されます。Time values are measured in 100-nanosecond units called ticks. 特定の日付では、タイマー刻みの数を西暦 0001 年 1 月 1 日午前 12時 00分時以降A particular date is the number of ticks since 12:00 midnight, January 1, 0001 A.D. (西暦)GregorianCalendarカレンダーです。(C.E.) in the GregorianCalendar calendar. 数は、うるう秒によって追加されるタイマー刻みを除外します。The number excludes ticks that would be added by leap seconds. たとえば、31241376000000000l のタイマー刻みの値は、午前 12時 00分: 00 0100 年 1 月 01日金曜日の日付表します。For example, a ticks value of 31241376000000000L represents the date Friday, January 01, 0100 12:00:00 midnight. ADateTime値が常に明確なコンテキストまたは既定の暦で表されます。A DateTime value is always expressed in the context of an explicit or default calendar.

注意

分または秒などの他の時間間隔に変換することは、使用する必要があります、タイマー刻みの値を使用している場合、 TimeSpan.TicksPerDayTimeSpan.TicksPerHourTimeSpan.TicksPerMinuteTimeSpan.TicksPerSecond、またはTimeSpan.TicksPerMillisecond変換を実行する定数。If you are working with a ticks value that you want to convert to some other time interval, such as minutes or seconds, you should use the TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, or TimeSpan.TicksPerMillisecond constant to perform the conversion. たとえば、秒数を追加するによって表されるをタイマー刻み数が指定された、Secondのコンポーネントである、DateTime値、式を使用することができますdateValue.Second + nTicks/Timespan.TicksPerSecondFor example, to add the number of seconds represented by a specified number of ticks to the Second component of a DateTime value, you can use the expression dateValue.Second + nTicks/Timespan.TicksPerSecond.

この記事の例のセット全体のソースを表示するにはいずれかでVisual Basicまたはc# GitHub の docs リポジトリから。You can view the source for the entire set of examples from this article in either Visual Basic or C# from the docs repository on GitHub.

注意

代わりに、DateTimeは具体的にはタイム ゾーンの日付と時刻の値を操作の構造体、DateTimeOffset構造体。An alternative to the DateTime structure for working with date and time values in particular time zones is the DateTimeOffset structure. DateTimeOffset構造体をプライベートの日付と時刻の情報を格納するDateTimeフィールドと、これによって、日付し、時刻の分の数、プライベートで UTC と異なるInt16フィールド。The DateTimeOffset structure stores date and time information in a private DateTime field and the number of minutes by which that date and time differs from UTC in a private Int16 field. できるようになります、DateTimeOffset値は、特定のタイム ゾーンの時間を反映するように、DateTime値は、明確にのみ UTC とローカル タイム ゾーンの時刻を反映できます。This makes it possible for a DateTimeOffset value to reflect the time in a particular time zone, whereas a DateTime value can unambiguously reflect only UTC and the local time zone's time. 使用する場合について、DateTime構造体、またはDateTimeOffset日付と時刻の値を使用する場合に構造体は、「選択の間で DateTime DateTimeOffset TimeSpan、および TimeZoneInfoします。For a discussion about when to use the DateTime structure or the DateTimeOffset structure when working with date and time values, see Choosing Between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo.

DateTime オブジェクトの初期化Initializing a DateTime object

新しいパスワードに、初期値を割り当てることができますDateTimeさまざまな方法で値。You can assign an initial value to a new DateTime value in many different ways:

  • いずれかの値については、引数を指定するコンス トラクターの呼び出しまたは暗黙的な既定のコンス トラクターを使用します。Calling a constructor, either one where you specify arguments for values, or use the implicit default constructor.
  • 割り当てをDateTimeプロパティまたはメソッドの戻り値にします。Assigning a DateTime to the return value of a property or method.
  • 解析、DateTime文字列表現からの値。Parsing a DateTime value from its string representation.
  • インスタンス化する特定の言語の Visual Basic の機能を使用して、DateTimeします。Using Visual Basic specific language features to instantiate a DateTime.

次のコード スニペットでは、それぞれの例を示します。The following code snippets show examples of each:

コンス トラクターを呼び出すInvoke Constructors

オーバー ロードを呼び出す、 DateTime (年、月、および日、またはタイマー刻みの数) などの日付と時刻の値の要素を指定するコンス トラクター。You call any of the overloads of the DateTime constructor that specify elements of the date and time value (such as the year, month, and day, or the number of ticks). 次のコードを使用して、特定の日付、DateTime年、月、日、時間、分、および秒を指定するコンス トラクター。The following code creates a specific date using the DateTime constructor specifying the year, month, day, hour, minute, and second.

Dim date1 As New Date(2008, 5, 1, 8, 30, 52)
DateTime date1 = new DateTime(2008, 5, 1, 8, 30, 52);
Console.WriteLine(date1);

呼び出す、DateTimeするときに構造体の暗黙的な既定のコンス トラクター、DateTimeその既定値に初期化します。You invoke the DateTime structure's implicit default constructor when you want a DateTime initialized to its default value. (詳細については、値型の暗黙的な既定のコンス トラクターは、次を参照してください値型。)。一部のコンパイラが宣言をサポートしても、DateTime明示的に値を割り当てずの値。(For details on the implicit default constructor of a value type, see Value Types.) Some compilers also support declaring a DateTime value without explicitly assigning a value to it. 既定値で結果もせず、明示的な初期化の値を作成します。Creating a value without an explicit initialization also results in the default value. 次の例を示しています、 DateTime c# および Visual Basic では、暗黙の既定のコンス トラクターと同様に、 DateTime Visual Basic での割り当てなしの宣言。The following example illustrates the DateTime implicit default constructor in C# and Visual Basic, as well as a DateTime declaration without assignment in Visual Basic.

Dim dat1 As DateTime
' The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat1.ToString(System.Globalization.CultureInfo.InvariantCulture))
' The following method call displays True.
Console.WriteLine(dat1.Equals(Date.MinValue))

Dim dat2 As New DateTime()
' The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat2.ToString(System.Globalization.CultureInfo.InvariantCulture))
' The following method call displays True.
Console.WriteLine(dat2.Equals(Date.MinValue))
DateTime dat1 = new DateTime();
// The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat1.ToString(System.Globalization.CultureInfo.InvariantCulture));
// The following method call displays True.
Console.WriteLine(dat1.Equals(DateTime.MinValue));

計算値を割り当てるAssigning a computed value

割り当てることができます、DateTimeオブジェクトのプロパティまたはメソッドによって返される日付と時刻の値。You can assign the DateTime object a date and time value returned by a property or method. 次の例では、割り当て、現在の日付と時刻、世界協定時刻 (UTC) の現在の日付と時刻と現在の日付に 3 つの新しいDateTime変数。The following example assigns the current date and time, the current Coordinated Universal Time (UTC) date and time, and the current date to three new DateTime variables.

Dim date1 As Date = Date.Now
Dim date2 As Date = Date.UtcNow
Dim date3 As Date = Date.Today
DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.UtcNow;
DateTime date3 = DateTime.Today;

DateTime を表す文字列の解析Parsing a string that represents a DateTime

ParseParseExactTryParse、およびTryParseExactメソッドはすべて、文字列を等価の日付と時刻の値に変換します。The Parse, ParseExact, TryParse, and TryParseExact methods all convert a string to its equivalent date and time value. 次の例を使用して、ParseParseExact文字列を解析およびに変換するメソッドをDateTime値。The following examples use the Parse and ParseExact methods to parse a string and convert it to a DateTime value. 2 番目の形式でサポートされている形式を使用して、 ISO 8601標準を表す日付と時刻文字列の形式です。The second format uses a form supported by the ISO 8601 standard for a representing date and time in string format. この標準的な表現は、web サービスの日付情報を転送によく使用します。This standard representation is often used to transfer date information in web services.

Dim dateString As String = "5/1/2008 8:30:52 AM"
Dim date1 As Date = Date.Parse(dateString,
                       System.Globalization.CultureInfo.InvariantCulture)
Dim iso8601String As String = "20080501T08:30:52Z"
Dim dateISO8602 As Date = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ",
                              System.Globalization.CultureInfo.InvariantCulture)
Console.WriteLine(dateISO8602)

string dateString = "5/1/2008 8:30:52 AM";
DateTime date1 = DateTime.Parse(dateString,
                          System.Globalization.CultureInfo.InvariantCulture);
string iso8601String = "20080501T08:30:52Z";
DateTime dateISO8602 = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ",
                                System.Globalization.CultureInfo.InvariantCulture);

TryParseTryParseExactメソッドは、文字列の有効な表現であるかどうかを示す、DateTimeと、値の場合は、変換を実行します。The TryParse and TryParseExact methods indicate whether a string is a valid representation of a DateTime value and, if it is, performs the conversion.

Visual basic の言語固有の構文Language-specific syntax for Visual Basic

次の Visual Basic ステートメントは、新しい初期化DateTime値。The following Visual Basic statement initializes a new DateTime value.

Dim date1 As Date = #5/1/2008 8:30:52AM#

DateTime 値とその文字列表現DateTime values and their string representations

内部的には、すべてDateTime値は 0001 年 1 月 1 日の午前 12時 00分: 00 から経過したタイマー刻み (100 ナノ秒間隔の数) の数として表されます。Internally, all DateTime values are represented as the number of ticks (the number of 100-nanosecond intervals) that have elapsed since 12:00:00 midnight, January 1, 0001. 実際、DateTime値は表示されるときに、その値の表示方法に依存しません。The actual DateTime value is independent of the way in which that value appears when displayed. 外観をDateTime値が値を文字列表現に変換する書式設定操作の結果。The appearance of a DateTime value is the result of a formatting operation that converts a value to its string representation.

日付と時刻の値の外観では、カルチャ、国際標準、アプリケーションの要件、および個人の好みによります。The appearance of date and time values is dependent on culture, international standards, application requirements, and personal preference. DateTime構造体のオーバー ロードによって、日付と時刻の値の書式設定の柔軟性を提供するToStringします。The DateTime structure offers flexibility in formatting date and time values through overloads of ToString. 既定のDateTime.ToString()メソッドは、現在のカルチャの短い形式の日付および時間の長い時刻パターンを使用して日付と時刻の値の文字列表現を返します。The default DateTime.ToString() method returns the string representation of a date and time value using the current culture's short date and long time pattern. 次のコードの例では、既定値DateTime.ToString()メソッド。The following example uses the default DateTime.ToString() method. 現在のカルチャの短い日付と長い時刻パターンを使用して日時を表示します。It displays the date and time using the short date and long time pattern for the current culture. EN-US カルチャは、例が実行されたコンピューターの現在のカルチャです。The en-US culture is the current culture on the computer on which the example was run.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString());
// For en-US culture, displays 3/1/2008 7:00:00 AM
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString())
' For en-US culture, displays 3/1/2008 7:00:00 AM

クライアントから別のカルチャで、サーバー可能性がある web シナリオをサポートするために、特定のカルチャの日付の書式設定する必要があります。You may need to format dates in a specific culture to support web scenarios where the server may be in a different culture from the client. 使用して、カルチャを指定する、DateTime.ToString(IFormatProvider)特定のカルチャの短い日付と長い時刻形式を作成します。You specify the culture using the DateTime.ToString(IFormatProvider) method to create the short date and long time representation in a specific culture. 次の例では、DateTime.ToString(IFormatProvider)日付し、時刻の FR-FR カルチャの短い日付と長い時刻パターンを使用するメソッド。The following example uses the DateTime.ToString(IFormatProvider) method to display the date and time using the short date and long time pattern for the fr-FR culture.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 01/03/2008 07:00:00
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 01/03/2008 07:00:00

その他のアプリケーションには、日付の別の文字列表現が必要です。Other applications may require different string representations of a date. DateTime.ToString(String)メソッドは、現在のカルチャの書式指定規則を使用して、標準またはカスタム書式指定子によって定義された文字列表現を返します。The DateTime.ToString(String) method returns the string representation defined by a standard or custom format specifier using the formatting conventions of the current culture. 次の例では、 DateTime.ToString(String) en-us で時刻のパターンと完全な日付を表示する方法をカルチャ、例が実行されたコンピューターの現在のカルチャ。The following example uses the DateTime.ToString(String) method to display the full date and time pattern for the en-US culture, the current culture on the computer on which the example was run.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F"));
// Displays Saturday, March 01, 2008 7:00:00 AM
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("F"))
' Displays Saturday, March 01, 2008 7:00:00 AM

最後に、カルチャと形式を使用して、両方を指定、DateTime.ToString(String, IFormatProvider)メソッド。Finally, you can specify both the culture and the format using the DateTime.ToString(String, IFormatProvider) method. 次の例では、DateTime.ToString(String, IFormatProvider)完全な日付と時刻のパターン、FR-FR カルチャを表示するメソッド。The following example uses the DateTime.ToString(String, IFormatProvider) method to display the full date and time pattern for the fr-FR culture.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F", new System.Globalization.CultureInfo("fr-FR")));
// Displays samedi 1 mars 2008 07:00:00
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("F", New System.Globalization.CultureInfo("fr-FR")))
' Displays samedi 1 mars 2008 07:00:00

DateTime.ToString(String)他の形式を指定するカスタム書式指定文字列でオーバー ロードが使用もできます。The DateTime.ToString(String) overload can also be used with a custom format string to specify other formats. 次の例を使用して文字列を書式設定する方法を示しています、 ISO 8601 web サービスに使用される多くの場合、標準の形式。The following example shows how to format a string using the ISO 8601 standard format often used for web services. Iso 8601 形式には、対応する標準書式指定文字列はありません。The Iso 8601 format does not have a corresponding standard format string.

[!code-csharp-interactiveSystem.DateTime.Formatting#5][!code-csharp-interactiveSystem.DateTime.Formatting#5]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("yyyyMMddTHH:mm:ssZ"))
' Displays 20080301T07:00:00Z

書式設定の詳細についてはDateTime値を参照してくださいStandard Date and Time Format StringsCustom Date and Time Format StringsFor more information about formatting DateTime values, see Standard Date and Time Format Strings and Custom Date and Time Format Strings.

文字列から DateTime 値の解析Parsing DateTime values from strings

日付と時刻を文字列形式を変換する解析をDateTime値。Parsing converts the string representation of a date and time to a DateTime value. 通常、日付と時刻の文字列では、アプリケーションに 2 つのさまざまな使用法があります。Typically, date and time strings have two different usages in applications:

  • 日付と時刻は、さまざまなフォームを受け取り、現在のカルチャまたは特定のカルチャのいずれかの規則を反映します。A date and time takes a variety of forms and reflects the conventions of either the current culture or a specific culture. たとえば、アプリケーションでは、現在のカルチャが「12/15/2013」または「2013 年 12 月 15 日」と日付の値を入力するには、EN-US ユーザーが使用できます。For example, an application allows a user whose current culture is en-US to input a date value as "12/15/2013" or "December 15, 2013". これにより、ユーザーが現在のカルチャが「2013/15/12」または「15 年 12 月の 2013」として、日付の値を入力するには、en-gbIt allows a user whose current culture is en-gb to input a date value as "15/12/2013" or "15 December 2013."

  • 日付と時刻は、定義済みの形式で表されます。A date and time is represented in a predefined format. たとえば、アプリケーションでは、アプリが実行されているカルチャとは無関係に「20130103」としての日付をシリアル化します。For example, an application serializes a date as "20130103" independently of the culture on which the app is running. アプリケーションが必要があります、現在のカルチャの短い日付形式で日付を入力します。An application may require dates be input in the current culture's short date format.

使用する、ParseまたはTryParseカルチャで使用される一般的な日付と時刻の形式のいずれかから文字列に変換するメソッド、DateTime値。You use the Parse or TryParse method to convert a string from one of the common date and time formats used by a culture to a DateTime value. 次の例は、使用する方法を示しています。TryParseを異なるカルチャに固有の形式で日付文字列に変換する、DateTime値。The following example shows how you can use TryParse to convert date strings in different culture-specific formats to a DateTime value. 英語 (英国) を呼び出し、現在のカルチャを変更、GetDateTimeFormats()日付と時刻の文字列の配列を生成します。It changes the current culture to English (Great Britain) and calls the GetDateTimeFormats() method to generate an array of date and time strings. これは、後、配列内の各要素を渡します、TryParseメソッド。It then passes each element in the array to the TryParse method. 例の出力は、解析メソッドが正常に各カルチャに固有の日付と時刻の文字列を変換することを示しています。The output from the example shows the parsing method was able to successfully convert each of the culture-specific date and time strings.

System.Threading.Thread.CurrentThread.CurrentCulture = 
    System.Globalization.CultureInfo.CreateSpecificCulture("en-GB");

DateTime date1 = new DateTime(2013, 6, 1, 12, 32, 30);
List<string> badFormats = new List<String>();

Console.WriteLine($"{"Date String",-37} {"Date",-19}\n");
foreach (var dateString in date1.GetDateTimeFormats())
{
    DateTime parsedDate;
    if (DateTime.TryParse(dateString, out parsedDate))
        Console.WriteLine($"{dateString,-37} {DateTime.Parse(dateString),-19}");
    else
        badFormats.Add(dateString);
}

// Display strings that could not be parsed.
if (badFormats.Count > 0)
{
    Console.WriteLine("\nStrings that could not be parsed: ");
    foreach (var badFormat in badFormats)
        Console.WriteLine($"   {badFormat}");
}
// Press "Run" to see the output
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

Dim date1 As DateTime = New DateTime(2013, 6, 1, 12, 32, 30)
Dim badFormats As New List(Of String)

Console.WriteLine($"{"Date String",-37} {"Date",-19}")
Console.WriteLine()
For Each dateString As String In date1.GetDateTimeFormats()
    Dim parsedDate As DateTime
    If DateTime.TryParse(dateString, parsedDate) Then
        Console.WriteLine($"{dateString,-37} {DateTime.Parse(dateString),-19:g}")
    Else
        badFormats.Add(dateString)
    End If
Next

' Display strings that could not be parsed.
If badFormats.Count > 0 Then
    Console.WriteLine()
    Console.WriteLine("Strings that could not be parsed: ")
    For Each badFormat In badFormats
        Console.WriteLine($"   {badFormat}")
    Next
End If
' The example displays the following output:
'       Date String                           Date               
'       
'       01/06/2013                            01/06/2013 00:00:00
'       01/06/13                              01/06/2013 00:00:00
'       1/6/13                                01/06/2013 00:00:00
'       1.6.13                                01/06/2013 00:00:00
'       2013-06-01                            01/06/2013 00:00:00
'       01 June 2013                          01/06/2013 00:00:00
'       1 June 2013                           01/06/2013 00:00:00
'       01 June 2013 12:32                    01/06/2013 12:32:00
'       01 June 2013 12:32                    01/06/2013 12:32:00
'       01 June 2013 12:32 PM                 01/06/2013 12:32:00
'       01 June 2013 12:32 PM                 01/06/2013 12:32:00
'       1 June 2013 12:32                     01/06/2013 12:32:00
'       1 June 2013 12:32                     01/06/2013 12:32:00
'       1 June 2013 12:32 PM                  01/06/2013 12:32:00
'       1 June 2013 12:32 PM                  01/06/2013 12:32:00
'       01 June 2013 12:32:30                 01/06/2013 12:32:30
'       01 June 2013 12:32:30                 01/06/2013 12:32:30
'       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
'       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
'       1 June 2013 12:32:30                  01/06/2013 12:32:30
'       1 June 2013 12:32:30                  01/06/2013 12:32:30
'       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
'       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
'       01/06/2013 12:32                      01/06/2013 12:32:00
'       01/06/2013 12:32                      01/06/2013 12:32:00
'       01/06/2013 12:32 PM                   01/06/2013 12:32:00
'       01/06/2013 12:32 PM                   01/06/2013 12:32:00
'       01/06/13 12:32                        01/06/2013 12:32:00
'       01/06/13 12:32                        01/06/2013 12:32:00
'       01/06/13 12:32 PM                     01/06/2013 12:32:00
'       01/06/13 12:32 PM                     01/06/2013 12:32:00
'       1/6/13 12:32                          01/06/2013 12:32:00
'       1/6/13 12:32                          01/06/2013 12:32:00
'       1/6/13 12:32 PM                       01/06/2013 12:32:00
'       1/6/13 12:32 PM                       01/06/2013 12:32:00
'       1.6.13 12:32                          01/06/2013 12:32:00
'       1.6.13 12:32                          01/06/2013 12:32:00
'       1.6.13 12:32 PM                       01/06/2013 12:32:00
'       1.6.13 12:32 PM                       01/06/2013 12:32:00
'       2013-06-01 12:32                      01/06/2013 12:32:00
'       2013-06-01 12:32                      01/06/2013 12:32:00
'       2013-06-01 12:32 PM                   01/06/2013 12:32:00
'       2013-06-01 12:32 PM                   01/06/2013 12:32:00
'       01/06/2013 12:32:30                   01/06/2013 12:32:30
'       01/06/2013 12:32:30                   01/06/2013 12:32:30
'       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
'       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
'       01/06/13 12:32:30                     01/06/2013 12:32:30
'       01/06/13 12:32:30                     01/06/2013 12:32:30
'       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
'       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
'       1/6/13 12:32:30                       01/06/2013 12:32:30
'       1/6/13 12:32:30                       01/06/2013 12:32:30
'       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
'       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
'       1.6.13 12:32:30                       01/06/2013 12:32:30
'       1.6.13 12:32:30                       01/06/2013 12:32:30
'       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
'       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
'       2013-06-01 12:32:30                   01/06/2013 12:32:30
'       2013-06-01 12:32:30                   01/06/2013 12:32:30
'       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
'       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
'       01 June                               01/06/2013 00:00:00
'       01 June                               01/06/2013 00:00:00
'       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
'       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
'       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
'       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
'       2013-06-01T12:32:30                   01/06/2013 12:32:30
'       12:32                                 22/04/2013 12:32:00
'       12:32                                 22/04/2013 12:32:00
'       12:32 PM                              22/04/2013 12:32:00
'       12:32 PM                              22/04/2013 12:32:00
'       12:32:30                              22/04/2013 12:32:30
'       12:32:30                              22/04/2013 12:32:30
'       12:32:30 PM                           22/04/2013 12:32:30
'       12:32:30 PM                           22/04/2013 12:32:30
'       2013-06-01 12:32:30Z                  01/06/2013 05:32:30
'       01 June 2013 19:32:30                 01/06/2013 19:32:30
'       01 June 2013 19:32:30                 01/06/2013 19:32:30
'       01 June 2013 07:32:30 PM              01/06/2013 19:32:30
'       01 June 2013 7:32:30 PM               01/06/2013 19:32:30
'       1 June 2013 19:32:30                  01/06/2013 19:32:30
'       1 June 2013 19:32:30                  01/06/2013 19:32:30
'       1 June 2013 07:32:30 PM               01/06/2013 19:32:30
'       1 June 2013 7:32:30 PM                01/06/2013 19:32:30
'       June 2013                             01/06/2013 00:00:00
'       June 2013                             01/06/2013 00:00:00

使用する、ParseExactTryParseExactを特定の形式または形式に一致する必要がある文字列を変換するメソッド、DateTime値。You use the ParseExact and TryParseExact methods to convert a string that must match a particular format or formats to a DateTime value. 解析メソッドのパラメーターとしては、日付と時刻の書式指定文字列を 1 つまたは複数を指定します。You specify one or more date and time format strings as a parameter to the parsing method. 次の例では、 TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) "yyyyMMdd"形式または"HHmmss"形式のいずれかにする必要がある文字列に変換するメソッドDateTime値。The following example uses the TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) method to convert strings that must be either in a "yyyyMMdd" format or a "HHmmss" format to DateTime values.

string[] formats = { "yyyyMMdd", "HHmmss" };
string[] dateStrings = { "20130816", "20131608", "  20130816   ",
                   "115216", "521116", "  115216  " };
DateTime parsedDate;

foreach (var dateString in dateStrings)
{
    if (DateTime.TryParseExact(dateString, formats, null,
                               System.Globalization.DateTimeStyles.AllowWhiteSpaces |
                               System.Globalization.DateTimeStyles.AdjustToUniversal,
                               out parsedDate))
        Console.WriteLine($"{dateString} --> {parsedDate:g}");
    else
        Console.WriteLine($"Cannot convert {dateString}");
}
// The example displays the following output:
//       20130816 --> 8/16/2013 12:00 AM
//       Cannot convert 20131608
//         20130816    --> 8/16/2013 12:00 AM
//       115216 --> 4/22/2013 11:52 AM
//       Cannot convert 521116
//         115216   --> 4/22/2013 11:52 AM
Dim formats() As String = {"yyyyMMdd", "HHmmss"}
Dim dateStrings() As String = {"20130816", "20131608",
                              "  20130816   ", "115216",
                              "521116", "  115216  "}
Dim parsedDate As DateTime

For Each dateString As String In dateStrings
    If DateTime.TryParseExact(dateString, formats, Nothing,
                           DateTimeStyles.AllowWhiteSpaces Or
                           DateTimeStyles.AdjustToUniversal,
                           parsedDate) Then
        Console.WriteLine($"{dateString} --> {parsedDate:g}")
    Else
        Console.WriteLine($"Cannot convert {dateString}")
    End If
Next
' The example displays the following output:
'       20130816 --> 8/16/2013 12:00 AM
'       Cannot convert 20131608
'         20130816    --> 8/16/2013 12:00 AM
'       115216 --> 4/22/2013 11:52 AM
'       Cannot convert 521116
'         115216   --> 4/22/2013 11:52 AM

1 つの一般的な用途ParseExactでは、通常、web サービスからの文字列形式に変換するにはISO 8601標準書式指定します。One common use for ParseExact is to convert a string representation from a web service, usually in ISO 8601 standard format. 次のコードは、使用する正しい形式の文字列を示しています。The following code shows the correct format string to use:

string iso8601String = "20080501T08:30:52Z";
DateTime dateISO8602 = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ", 
    System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine($"{iso8601String} --> {dateISO8602:g}");
Dim iso8601String As String = "20080501T08:30:52Z"
Dim dateISO8602 As DateTime = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ", CultureInfo.InvariantCulture)
Console.WriteLine($"{iso8601String} --> {dateISO8602:g}")

文字列を解析できない場合、ParseParseExactメソッドが例外をスローします。If a string cannot be parsed, the Parse and ParseExact methods throw an exception. TryParseTryParseExactメソッドを返す、Boolean変換が成功したか、失敗したかどうかを示す値。The TryParse and TryParseExact methods return a Boolean value that indicates whether the conversion succeeded or failed. 使用する必要があります、TryParseまたはTryParseExactパフォーマンスが重要なシナリオでのメソッド。You should use the TryParse or TryParseExact methods in scenarios where performance is important. 日付と時刻文字列の解析操作は、高い失敗率がある傾向があり、例外処理は高価なのです。The parsing operation for date and time strings tends to have a high failure rate, and exception handling is expensive. ユーザーが入力文字列の場合は、これらのメソッドを使用または不明なソースから取得します。Use these methods if strings are input by users or coming from an unknown source.

日付と時刻の値を解析の詳細については、次を参照してください。解析の日付と時刻文字列します。For more information about parsing date and time values, see Parsing Date and Time Strings.

DateTime 値DateTime values

時刻の値の説明については、DateTime型は、世界協定時刻 (UTC) 標準を使用して表されます。Descriptions of time values in the DateTime type are often expressed using the Coordinated Universal Time (UTC) standard. 世界協定時刻は、国際的に認められた名前グリニッジ標準時 (GMT) です。Coordinated Universal Time is the internationally recognized name for Greenwich Mean Time (GMT). 世界協定時刻は、0 度経度、UTC の起点で測定される時間です。Coordinated Universal Time is the time as measured at zero degrees longitude, the UTC origin point. 夏時間では、UTC を適用されません。Daylight saving time is not applicable to UTC.

現地時刻では、特定のタイム ゾーンを基準とします。Local time is relative to a particular time zone. タイム ゾーンは、タイム ゾーン オフセットに関連付けられます。A time zone is associated with a time zone offset. タイム ゾーン オフセットは、タイム ゾーンを UTC の原点からの時間単位の距離です。A time zone offset is the displacement of the time zone measured in hours from the UTC origin point. さらに、ローカル時刻は夏時間、加算または減算する時間間隔を調整するによって影響を受ける必要に応じて。In addition, local time is optionally affected by daylight saving time, which adds or subtracts a time interval adjustment. 現地時刻は、UTC と必要な場合の夏時間の調整にタイム ゾーン オフセットを加算して計算されます。Local time is calculated by adding the time zone offset to UTC and adjusting for daylight saving time if necessary. UTC の原点にあるタイム ゾーン オフセットには 0 です。The time zone offset at the UTC origin point is zero.

UTC 時刻は、ファイル内の計算、比較、および格納の日付と時刻に適しています。UTC time is suitable for calculations, comparisons, and storing dates and time in files. 現地時刻では、デスクトップ アプリケーションのユーザー インターフェイスでの表示に適しています。Local time is appropriate for display in user interfaces of desktop applications. (多くの Web アプリケーション) などのタイム ゾーン対応のアプリケーションも、さまざまな他のタイム ゾーンを使用する必要があります。Time zone-aware applications (such as many Web applications) also need to work with a number of other time zones.

場合、KindのプロパティをDateTimeオブジェクトがDateTimeKind.Unspecified、表される時刻は、現地時刻、UTC 時刻、またはその他のいくつかのタイム ゾーンの時刻かどうか明らかではありません。If the Kind property of a DateTime object is DateTimeKind.Unspecified, it is unspecified whether the time represented is local time, UTC time, or a time in some other time zone.

DateTime の解決DateTime resolution

注意

日付と時刻の算術演算を実行するための代替としてDateTime、経過時間を測定する値を使用することができます、Stopwatchクラス。As an alternative to performing date and time arithmetic on DateTime values to measure elapsed time, you can use the Stopwatch class.

Ticksプロパティは 1 つ 10 分の 1 秒の単位での日付と時刻の値を表します。The Ticks property expresses date and time values in units of one ten-millionth of a second. Millisecondプロパティは、日付と時刻の値の秒部分の 1/1000 を返します。The Millisecond property returns the thousandths of a second in a date and time value. 繰り返しの呼び出しを使用して、DateTime.Now経過時間を測定するプロパティは、システム クロックに依存します。Using repeated calls to the DateTime.Now property to measure elapsed time is dependent on the system clock. Windows 7 および Windows 8 システムのシステム クロックは、解像度は約 15 ミリ秒です。The system clock on Windows 7 and Windows 8 systems has a resolution of approximately 15 milliseconds. この解像度は 100 ミリ秒未満の小規模の時間間隔に影響します。This resolution affects small time intervals less than 100 milliseconds.

次の例では、システム時計の解像度に現在の日付と時刻の値の依存関係を示します。The following example illustrates the dependence of current date and time values on the resolution of the system clock. 例では、外側のループが 20 回繰り返され、内側のループが、外側のループを遅延するために使用します。In the example, an outer loop repeats 20 times, and an inner loop serves to delay the outer loop. かどうか、外側のループ カウンターの値は 10 への呼び出し、Thread.Sleepメソッドには 5 ミリ秒の遅延が導入されています。If the value of the outer loop counter is 10, a call to the Thread.Sleep method introduces a five-millisecond delay. 次の例では、によって返されたミリ秒数、DateTime.Now.Millisecondsプロパティの変更を呼び出した後だけThread.Sleepです。The following example shows the number of milliseconds returned by the DateTime.Now.Milliseconds property changes only after the call to Thread.Sleep.

String output = "";
for (int ctr = 0; ctr <= 20; ctr++)
{
    output += String.Format($"{DateTime.Now.Millisecond}\n");
    // Introduce a delay loop.
    for (int delay = 0; delay <= 1000; delay++)
    { }

    if (ctr == 10)
    {
        output += "Thread.Sleep called...\n";
        System.Threading.Thread.Sleep(5);
    }
}
Console.WriteLine(output);
// Press "Run" to see the output
Dim output As String = ""
For ctr As Integer = 0 To 20
    output += Date.Now.Millisecond.ToString() + vbCrLf
    ' Introduce a delay loop.
    For delay As Integer = 0 To 1000
    Next

    If ctr = 10 Then
        output += "Thread.Sleep called..." + vbCrLf
        Thread.Sleep(5)
    End If
Next
Console.WriteLine(output)
' The example displays output like the following:
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       Thread.Sleep called...
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143

DateTime 操作DateTime operations

使用して、計算、DateTime構造体などAddまたはSubtract、構造体の値を変更しません。A calculation using a DateTime structure, such as Add or Subtract, does not modify the value of the structure. 代わりに、計算は、新しい返しますDateTime値が計算の結果。Instead, the calculation returns a new DateTime structure whose value is the result of the calculation.

タイム ゾーン (たとえば、UTC と現地時刻、または 1 つのタイム ゾーン間で) 間で変換操作を夏時間を考慮するが、算術演算や比較操作はありません。Conversion operations between time zones (such as between UTC and local time, or between one time zone and another) take daylight saving time into account, but arithmetic and comparison operations do not.

DateTime構造体自体を変換する 1 つのタイム ゾーンの制限付きサポートを提供しています。The DateTime structure itself offers limited support for converting from one time zone to another. 使用することができます、 ToLocalTime UTC を現地時刻、または変換する方法を使用することができます、ToUniversalTime現地時刻から UTC に変換するメソッド。You can use the ToLocalTime method to convert UTC to local time, or you can use the ToUniversalTime method to convert from local time to UTC. ただし、タイム ゾーン変換メソッドの完全なセットがで使用できる、TimeZoneInfoクラス。However, a full set of time zone conversion methods is available in the TimeZoneInfo class. これらのメソッドを使用して他の任意のタイム ゾーンの時刻には、世界のタイム ゾーンのいずれかで時刻を変換します。You convert the time in any one of the world's time zones to the time in any other time zone using these methods.

計算および比較DateTimeオブジェクトは、オブジェクトが同じタイム ゾーンの時刻を表す場合にのみ意味を持ちます。Calculations and comparisons of DateTime objects are meaningful only if the objects represent times in the same time zone. 使用することができます、TimeZoneInfoを表すオブジェクトをDateTime値のタイム ゾーンの 2 つは疎結合が。You can use a TimeZoneInfo object to represent a DateTime value's time zone, although the two are loosely coupled. ADateTimeオブジェクトに日付と時刻値のタイム ゾーンを表すオブジェクトを返すプロパティがありません。A DateTime object does not have a property that returns an object that represents that date and time value's time zone. Kindプロパティを示す場合、 DateTime UTC、現地時刻を表すまたはが指定されていません。The Kind property indicates if a DateTime represents UTC, local time, or is unspecified. タイム ゾーン対応のアプリケーションでは、するタイム ゾーンを判断するいくつかの外部メカニズムに依存する必要があります、DateTimeオブジェクトが作成されました。In a time zone-aware application, you must rely on some external mechanism to determine the time zone in which a DateTime object was created. 両方をラップする構造体を使用する可能性があります、DateTime値とTimeZoneInfoを表すオブジェクトをDateTime値のタイム ゾーン。You could use a structure that wraps both the DateTime value and the TimeZoneInfo object that represents the DateTime value's time zone. UTC を計算および使用する比較の使用の詳細についてDateTime値を参照してください日付と時刻の算術演算の実行します。For details on using UTC in calculations and comparisons with DateTime values, see Performing Arithmetic Operations with Dates and Times.

DateTimeメンバーがその操作を実行する構成のグレゴリオ暦カレンダーを暗黙的に使用します。Each DateTime member implicitly uses the Gregorian calendar to perform its operation. 例外は、カレンダーを暗黙的に指定するメソッドです。Exceptions are methods that implicitly specify a calendar. カレンダーを指定するコンス トラクターが含まれますから派生したメソッド パラメーターを持つIFormatProviderなどSystem.Globalization.DateTimeFormatInfoします。These include constructors that specify a calendar, and methods with a parameter derived from IFormatProvider, such as System.Globalization.DateTimeFormatInfo.

操作のメンバーによって、DateTime型がうるう年や 1 か月の日数などのアカウントの詳細を考慮します。Operations by members of the DateTime type take into account details such as leap years and the number of days in a month.

DateTime 値との予定表DateTime values and calendars

.NET Framework クラス ライブラリにはから派生するすべての calendar クラスの数値が含まれています、Calendarクラス。The .NET Framework Class Library includes a number of calendar classes, all of which are derived from the Calendar class. それらは次のとおりです。They are:

各カルチャの読み取り専用で定義された既定の暦を使用してCultureInfo.Calendarプロパティ。Each culture uses a default calendar defined by its read-only CultureInfo.Calendar property. 各カルチャがその読み取り専用で定義された 1 つ以上の暦をサポート可能性がありますCultureInfo.OptionalCalendarsプロパティ。Each culture may support one or more calendars defined by its read-only CultureInfo.OptionalCalendars property. 現在、特定で使用する暦CultureInfoオブジェクトによって定義されますそのDateTimeFormatInfo.Calendarプロパティ。The calendar currently used by a specific CultureInfo object is defined by its DateTimeFormatInfo.Calendar property. ある予定表のいずれかを指定する必要がありますが、CultureInfo.OptionalCalendars配列。It must be one of the calendars found in the CultureInfo.OptionalCalendars array.

カルチャの現在の暦は、そのカルチャのすべての書式設定操作で使用されます。A culture's current calendar is used in all formatting operations for that culture. タイ仏暦のカルチャの既定の暦があるタイ仏暦時代 (年号) の予定表で表されるなど、ThaiBuddhistCalendarクラス。For example, the default calendar of the Thai Buddhist culture is the Thai Buddhist Era calendar, which is represented by the ThaiBuddhistCalendar class. ときに、CultureInfoタイ仏暦のカルチャを表すオブジェクトが日付と時刻の書式設定操作で使用される、時代 (年号) がタイ仏暦カレンダーを既定で使用されます。When a CultureInfo object that represents the Thai Buddhist culture is used in a date and time formatting operation, the Thai Buddhist Era calendar is used by default. 場合にのみ、構成のグレゴリオ暦カレンダーが使用されるカルチャのDateTimeFormatInfo.Calendarプロパティが変更された、次の例を示します。The Gregorian calendar is used only if the culture's DateTimeFormatInfo.Calendar property is changed, as the following example shows:

var thTH = new System.Globalization.CultureInfo("th-TH");
var value = new DateTime(2016, 5, 28);

Console.WriteLine(value.ToString(thTH));

thTH.DateTimeFormat.Calendar = new System.Globalization.GregorianCalendar();
Console.WriteLine(value.ToString(thTH));
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim value As New DateTime(2016, 5, 28)

Console.WriteLine(value.ToString(thTH))

thTH.DateTimeFormat.Calendar = New GregorianCalendar()
Console.WriteLine(value.ToString(thTH))
' The example displays the following output:
'       28/5/2559 0:00:00
'       28/5/2016 0:00:00

カルチャの現在の暦は、次の例のように、そのカルチャのすべての解析操作でも使用されます。A culture's current calendar is also used in all parsing operations for that culture, as the following example shows.

var thTH = new System.Globalization.CultureInfo("th-TH");
var value = DateTime.Parse("28/05/2559", thTH);
Console.WriteLine(value.ToString(thTH));

thTH.DateTimeFormat.Calendar = new System.Globalization.GregorianCalendar();
Console.WriteLine(value.ToString(thTH));
// Press "Run" to see the output
Private Sub ThaiBuddhistEraParse()
    Dim thTH As New CultureInfo("th-TH")
    Dim value As DateTime = DateTime.Parse("28/5/2559", thTH)
    Console.WriteLine(value.ToString(thTH))

    thTH.DateTimeFormat.Calendar = New GregorianCalendar()
    Console.WriteLine(value.ToString(thTH))
    ' The example displays the following output:
    '       28/5/2559 0:00:00
    '       28/5/2016 0:00:00
End Sub

インスタンス化する、DateTime呼び出すことによって、特定のカレンダーの日付と時刻要素 (年、月、日の数) を使用して値をDateTime コンス トラクターを含む、calendarパラメーターを渡す、 Calendarその暦を表すオブジェクト。You instantiate a DateTime value using the date and time elements (number of the year, month, and day) of a specific calendar by calling a DateTime constructor that includes a calendar parameter and passing it a Calendar object that represents that calendar. 次の例からの日付と時刻の要素を使用して、ThaiBuddhistCalendarカレンダーです。The following example uses the date and time elements from the ThaiBuddhistCalendar calendar.

var thTH = new System.Globalization.CultureInfo("th-TH");
var dat = new DateTime(2559, 5, 28, thTH.DateTimeFormat.Calendar);
Console.WriteLine($"Thai Buddhist era date: {dat.ToString("d", thTH)}");
Console.WriteLine($"Gregorian date:   {dat:d}");
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim dat As New DateTime(2559, 5, 28, thTH.DateTimeFormat.Calendar)
Console.WriteLine("Thai Buddhist Era date: {0}", dat.ToString("d", thTH))
Console.WriteLine("Gregorian date:   {0:d}", dat)
' The example displays the following output:
'       Thai Buddhist Era Date:  28/5/2559
'       Gregorian Date:     28/05/2016

DateTime コンス トラクターを含まない、calendarパラメーターは、日付と時刻の要素は、グレゴリオ暦でのユニットとして表されることを想定しています。DateTime constructors that do not include a calendar parameter assume that the date and time elements are expressed as units in the Gregorian calendar.

他のすべてのDateTimeプロパティとメソッドは、構成のグレゴリオ暦カレンダーを使用します。All other DateTime properties and methods use the Gregorian calendar. たとえば、DateTime.Yearプロパティは、グレゴリオ暦のカレンダーの年を返します、DateTime.IsLeapYear(Int32)メソッドを前提としているyearパラメーターは、構成のグレゴリオ暦カレンダーにおける年。For example, the DateTime.Year property returns the year in the Gregorian calendar, and the DateTime.IsLeapYear(Int32) method assumes that the year parameter is a year in the Gregorian calendar. DateTime構成のグレゴリオ暦カレンダーを使用するメンバーの対応するメンバーがある、Calendar固有のカレンダーを使用するクラス。Each DateTime member that uses the Gregorian calendar has a corresponding member of the Calendar class that uses a specific calendar. たとえば、Calendar.GetYearメソッドは、特定のカレンダーの年を返します、Calendar.IsLeapYearメソッドは解釈、yearパラメーターとして特定のカレンダーにおける年の数。For example, the Calendar.GetYear method returns the year in a specific calendar, and the Calendar.IsLeapYear method interprets the year parameter as a year number in a specific calendar. 次の例では、両方は使用して、DateTimeとの対応するメンバー、ThaiBuddhistCalendarクラス。The following example uses both the DateTime and the corresponding members of the ThaiBuddhistCalendar class.

var thTH = new System.Globalization.CultureInfo("th-TH");
var cal = thTH.DateTimeFormat.Calendar;
var dat = new DateTime(2559, 5, 28, cal);
Console.WriteLine("Using the Thai Buddhist Era calendar:");
Console.WriteLine($"Date: {dat.ToString("d", thTH)}");
Console.WriteLine($"Year: {cal.GetYear(dat)}");
Console.WriteLine($"Leap year: {cal.IsLeapYear(cal.GetYear(dat))}\n");

Console.WriteLine("Using the Gregorian calendar:");
Console.WriteLine($"Date: {dat:d}");
Console.WriteLine($"Year: {dat.Year}");
Console.WriteLine($"Leap year: {DateTime.IsLeapYear(dat.Year)}");
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim cal As Calendar = thTH.DateTimeFormat.Calendar
Dim dat As New DateTime(2559, 5, 28, cal)
Console.WriteLine("Using the Thai Buddhist Era calendar:")
Console.WriteLine("Date: {0}", dat.ToString("d", thTH))
Console.WriteLine("Year: {0}", cal.GetYear(dat))
Console.WriteLine("Leap year: {0}", cal.IsLeapYear(cal.GetYear(dat)))
Console.WriteLine()

Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine("Date: {0:d}", dat)
Console.WriteLine("Year: {0}", dat.Year)
Console.WriteLine("Leap year: {0}", DateTime.IsLeapYear(dat.Year))
' The example displays the following output:
'       Using the Thai Buddhist Era calendar
'       Date :   28/5/2559
'       Year: 2559
'       Leap year :   True
'
'       Using the Gregorian calendar
'       Date :   28/05/2016
'       Year: 2016
'       Leap year :   True

DateTime構造が含まれています、DayOfWeekグレゴリオ暦カレンダーにおける週の曜日を返します。The DateTime structure includes a DayOfWeek property that returns the day of the week in the Gregorian calendar. 年の週数を取得できるようにするメンバーは含まれません。It does not include a member that allows you to retrieve the week number of the year. 年の通算週を取得する呼び出し、カレンダーのCalendar.GetWeekOfYearメソッド。To retrieve the week of the year, call the individual calendar's Calendar.GetWeekOfYear method. 具体的な例を次に示します。The following example provides an illustration.

var thTH = new System.Globalization.CultureInfo("th-TH");
var thCalendar = thTH.DateTimeFormat.Calendar;
var dat = new DateTime(1395, 8, 18, thCalendar);
Console.WriteLine("Using the Thai Buddhist Era calendar:");
Console.WriteLine($"Date: {dat.ToString("d", thTH)}");
Console.WriteLine($"Day of Week: {thCalendar.GetDayOfWeek(dat)}");
Console.WriteLine($"Week of year: {thCalendar.GetWeekOfYear(dat, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday)}\n");

var greg = new System.Globalization.GregorianCalendar();
Console.WriteLine("Using the Gregorian calendar:");
Console.WriteLine($"Date: {dat:d}");
Console.WriteLine($"Day of Week: {dat.DayOfWeek}");
Console.WriteLine($"Week of year: {greg.GetWeekOfYear(dat, System.Globalization.CalendarWeekRule.FirstDay,DayOfWeek.Sunday)}");
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim thCalendar As Calendar = thTH.DateTimeFormat.Calendar
Dim dat As New DateTime(1395, 8, 18, thCalendar)
Console.WriteLine("Using the Thai Buddhist Era calendar:")
Console.WriteLine("Date: {0}", dat.ToString("d", thTH))
Console.WriteLine("Day of Week: {0}", thCalendar.GetDayOfWeek(dat))
Console.WriteLine("Week of year: {0}",
                thCalendar.GetWeekOfYear(dat, CalendarWeekRule.FirstDay,
                                       DayOfWeek.Sunday))
Console.WriteLine()

Dim greg As Calendar = New GregorianCalendar()
Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine("Date: {0:d}", dat)
Console.WriteLine("Day of Week: {0}", dat.DayOfWeek)
Console.WriteLine("Week of year: {0}",
                 greg.GetWeekOfYear(dat, CalendarWeekRule.FirstDay,
                                    DayOfWeek.Sunday))
' The example displays the following output:
'       Using the Thai Buddhist Era calendar
'       Date :  18/8/1395
'       Day of Week: Sunday
'       Week of year: 34
'       
'       Using the Gregorian calendar
'       Date :  18/08/0852
'       Day of Week: Sunday
'       Week of year: 34

日付と暦の詳細については、次を参照してください。カレンダーの使用します。For more information on dates and calendars, see Working with Calendars.

DateTime 値の永続化Persisting DateTime values

永続化することができますDateTime4 つの方法で値。You can persist DateTime values in four ways:

復元するルーチンをようにする必要があります、DateTime値のデータが失われるまたは選択したどの手法に関係なく、例外をスローしません。You must ensure that the routine that restores the DateTime values doesn't lose data or throw an exception regardless of which technique you choose. DateTime 値には、ラウンド トリップの必要があります。DateTime values should round-trip. つまり、元の値と、復元された値があります同じ。That is, the original value and the restored value should be the same. 場合に、元のDateTime値が 1 つの時刻の時点を表す、復元した場合の同じ時点を識別する必要があります。And if the original DateTime value represents a single instant of time, it should identify the same moment of time when it's restored.

値を文字列として永続化します。Persisting values as strings

正常に復元するDateTime文字列として保持されている値がこれらの規則に従ってください。To successfully restore DateTime values that are persisted as strings, follow these rules:

  • に関するカルチャ固有の書式指定文字列として保存されるときに復元するときに同じ前提条件を確認します。Make the same assumptions about culture-specific formatting when you restore the string as when you persisted it. 文字列は、現在のカルチャに保存されたシステムのカルチャから別のシステムで復元できることを確認するを呼び出して、ToStringインバリアント カルチャの規則を使用して文字列を保存するオーバー ロードします。To ensure that a string can be restored on a system whose current culture is different from the culture of the system it was saved on, call the ToString overload to save the string by using the conventions of the invariant culture. 呼び出す、Parse(String, IFormatProvider, DateTimeStyles)またはTryParse(String, IFormatProvider, DateTimeStyles, DateTime)インバリアント カルチャの規則を使用して、文字列を復元するオーバー ロードします。Call the Parse(String, IFormatProvider, DateTimeStyles) or TryParse(String, IFormatProvider, DateTimeStyles, DateTime) overload to restore the string by using the conventions of the invariant culture. 使用しないでください、 ToString()Parse(String)、またはTryParse(String, DateTime)オーバー ロードは、現在のスレッド カルチャの規則を使用します。Never use the ToString(), Parse(String), or TryParse(String, DateTime) overloads, which use the conventions of the current thread culture.

  • 日付は、1 つの時点を表している場合、同じ時間と復元、異なるタイム ゾーンであっても表すことを確認します。If the date represents a single moment of time, ensure that it represents the same moment in time when it's restored, even on a different time zone. 変換、DateTime保存する前に値を世界協定時刻 (UTC)。Convert the DateTime value to Coordinated Universal Time (UTC) before saving it. タイム ゾーン情報と共に値シリアル化することもできます。You can also serialize the value along with time zone information. この方法の詳細については、次を参照してください。 DateTime のシリアル化とタイム ゾーン データします。For more information about this approach, see Serializing DateTime and time zone data.

永続化時に行われる最も一般的なエラーDateTime値を文字列としては、既定値または現在のカルチャの書式指定規則に依存します。The most common error made when persisting DateTime values as strings is to rely on the formatting conventions of the default or current culture. 現在のカルチャが異なる場合、保存と復元、文字列の場合、問題が発生します。Problems arise if the current culture is different when saving and restoring the strings. 次の例は、これらの問題を示しています。The following example illustrates these problems. 英語 (米国) をここでは、現在のカルチャの書式指定規則を使用して 5 つの日付を保存します。It saves five dates using the formatting conventions of the current culture, which in this case is English (United States). ここでは英語 (英国) 別のカルチャの書式指定規則を使用して日付が復元されます。It restores the dates using the formatting conventions of a different culture, which in this case is English (Great Britain). 2 つのカルチャの書式指定規則が異なるため、2 つの日付を復元できないし、残りの 3 つの日付が正しく解釈されません。Because the formatting conventions of the two cultures are different, two of the dates can't be restored, and the remaining three dates are interpreted incorrectly. また、元の日付と時刻の値が 1 つに、復元された瞬間を表す場合は、時刻が正しくないタイム ゾーン情報が失われるためです。Also, if the original date and time values represent single moments in time, the restored times are incorrect because time zone information is lost.

public static void PersistAsLocalStrings()
{
    SaveLocalDatesAsString();
    RestoreLocalDatesFromString();
}

private static void SaveLocalDatesAsString()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    string output = null;

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        output += dates[ctr].ToString() + (ctr != dates.Length - 1 ? "|" : "");
    }
    StreamWriter sw = new StreamWriter(filenameTxt);
    sw.Write(output);
    sw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreLocalDatesFromString()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    StreamReader sr = new StreamReader(filenameTxt);
    string[] inputValues = sr.ReadToEnd().Split(new char[] { '|' },
                                                StringSplitOptions.RemoveEmptyEntries);
    sr.Close();
    Console.WriteLine("The dates on an {0} system:",
                      Thread.CurrentThread.CurrentCulture.Name);
    foreach (var inputValue in inputValues)
    {
        DateTime dateValue;
        if (DateTime.TryParse(inputValue, out dateValue))
        {
            Console.WriteLine($"'{inputValue}' --> {dateValue:f}");
        }
        else
        {
            Console.WriteLine("Cannot parse '{inputValue}'");
        }
    }
    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       Cannot parse //6/14/2014 6:32:00 AM//
//       //7/10/2014 11:49:00 PM// --> 07 October 2014 23:49
//       //1/10/2015 1:16:00 AM// --> 01 October 2015 01:16
//       Cannot parse //12/20/2014 9:45:00 PM//
//       //6/2/2014 3:14:00 PM// --> 06 February 2014 15:14
//       Restored dates...
Public Sub PersistAsLocalStrings()
    SaveDatesAsStrings()
    RestoreDatesAsStrings()
End Sub

Private Sub SaveDatesAsStrings()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim output As String = Nothing

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        output += dates(ctr).ToString() + If(ctr <> dates.Length - 1, "|", "")
    Next
    Dim sw As New StreamWriter(filenameTxt)
    sw.Write(output)
    sw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsStrings()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim sr As New StreamReader(filenameTxt)
    Dim inputValues() As String = sr.ReadToEnd().Split({"|"c}, StringSplitOptions.RemoveEmptyEntries)
    sr.Close()
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each inputValue In inputValues
        Dim dateValue As Date
        If DateTime.TryParse(inputValue, dateValue) Then
            Console.WriteLine($"'{inputValue}' --> {dateValue:f}")
        Else
            Console.WriteLine($"Cannot parse '{inputValue}'")
        End If
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       Cannot parse '6/14/2014 6:32:00 AM'
'       '7/10/2014 11:49:00 PM' --> 07 October 2014 23:49
'       '1/10/2015 1:16:00 AM' --> 01 October 2015 01:16
'       Cannot parse '12/20/2014 9:45:00 PM'
'       '6/2/2014 3:14:00 PM' --> 06 February 2014 15:14
'       Restored dates...

ラウンドト リップさせるDateTime値には、次の手順が正常に従ってください。To round-trip DateTime values successfully, follow these steps:

  1. 値が時間の 1 つの瞬間を表す場合にからローカル時刻を UTC に変換を呼び出して、ToUniversalTimeメソッド。If the values represent single moments of time, convert them from the local time to UTC by calling the ToUniversalTime method.
  2. 呼び出すことによって、日付を文字列表現に変換、ToString(String, IFormatProvider)またはString.Format(IFormatProvider, String, Object[])オーバー ロードします。Convert the dates to their string representations by calling the ToString(String, IFormatProvider) or String.Format(IFormatProvider, String, Object[]) overload. インバリアント カルチャの書式指定規則を使用して指定することによってCultureInfo.InvariantCultureとして、provider引数。Use the formatting conventions of the invariant culture by specifying CultureInfo.InvariantCulture as the provider argument. "O"または"R"標準書式指定文字列を使用して、値のラウンドト リップはことを指定します。Specify that the value should round-trip by using the "O" or "R" standard format string.

復元、永続化するDateTimeデータ損失なし、値が次の手順に従います。To restore the persisted DateTime values without data loss, follow these steps:

  1. 呼び出すことによって、データの解析、ParseExactまたはTryParseExactオーバー ロードします。Parse the data by calling the ParseExact or TryParseExact overload. 指定CultureInfo.InvariantCultureとして、provider引数と同じ標準書式指定文字列を使用した使用、format変換中に引数。Specify CultureInfo.InvariantCulture as the provider argument, and use the same standard format string you used for the format argument during conversion. 含める、DateTimeStyles.RoundtripKind値、styles引数。Include the DateTimeStyles.RoundtripKind value in the styles argument.
  2. 場合、DateTime値が 1 つの瞬間に、呼び出しを表す、ToLocalTime解析した日付を UTC から現地時刻に変換するメソッド。If the DateTime values represent single moments in time, call the ToLocalTime method to convert the parsed date from UTC to local time.

次の例では、インバリアント カルチャと、"O"標準書式指定文字列を使用していることを確認DateTime保存し、復元の値は、システム、カルチャ、またはソースとターゲット システムのタイム ゾーンに関係なくの同じ時点を表します。The following example uses the invariant culture and the "O" standard format string to ensure that DateTime values saved and restored represent the same moment in time regardless of the system, culture, or time zone of the source and target systems.

public static void PersistAsInvariantStrings()
{
    SaveDatesAsInvariantStrings();
    RestoreDatesAsInvariantStrings();
}

private static void SaveDatesAsInvariantStrings()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    string output = null;

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        output += dates[ctr].ToUniversalTime().ToString("O", CultureInfo.InvariantCulture)
                  + (ctr != dates.Length - 1 ? "|" : "");
    }
    StreamWriter sw = new StreamWriter(filenameTxt);
    sw.Write(output);
    sw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesAsInvariantStrings()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine("Current Time Zone: {0}",
                      TimeZoneInfo.Local.DisplayName);
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    StreamReader sr = new StreamReader(filenameTxt);
    string[] inputValues = sr.ReadToEnd().Split(new char[] { '|' },
                                                StringSplitOptions.RemoveEmptyEntries);
    sr.Close();
    Console.WriteLine("The dates on an {0} system:",
                      Thread.CurrentThread.CurrentCulture.Name);
    foreach (var inputValue in inputValues)
    {
        DateTime dateValue;
        if (DateTime.TryParseExact(inputValue, "O", CultureInfo.InvariantCulture,
                              DateTimeStyles.RoundtripKind, out dateValue))
        {
            Console.WriteLine($"'{inputValue}' --> {dateValue.ToLocalTime():f}");
        }
        else
        {
            Console.WriteLine("Cannot parse '{0}'", inputValue);
        }
    }
    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       '2014-06-14T13:32:00.0000000Z' --> 14 June 2014 14:32
//       '2014-07-11T06:49:00.0000000Z' --> 11 July 2014 07:49
//       '2015-01-10T09:16:00.0000000Z' --> 10 January 2015 09:16
//       '2014-12-21T05:45:00.0000000Z' --> 21 December 2014 05:45
//       '2014-06-02T22:14:00.0000000Z' --> 02 June 2014 23:14
//       Restored dates...
Public Sub PersistAsInvariantStrings()
    SaveDatesAsInvariantStrings()
    RestoreDatesAsInvariantStrings()
End Sub

Private Sub SaveDatesAsInvariantStrings()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim output As String = Nothing

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        output += dates(ctr).ToUniversalTime().ToString("O", CultureInfo.InvariantCulture) +
                                   If(ctr <> dates.Length - 1, "|", "")
    Next
    Dim sw As New StreamWriter(filenameTxt)
    sw.Write(output)
    sw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsInvariantStrings()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine("Current Time Zone: {0}",
                    TimeZoneInfo.Local.DisplayName)
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim sr As New StreamReader(filenameTxt)
    Dim inputValues() As String = sr.ReadToEnd().Split({"|"c}, StringSplitOptions.RemoveEmptyEntries)
    sr.Close()
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each inputValue In inputValues
        Dim dateValue As Date
        If DateTime.TryParseExact(inputValue, "O", CultureInfo.InvariantCulture,
                          DateTimeStyles.RoundtripKind, dateValue) Then
            Console.WriteLine($"'{inputValue}' --> {dateValue.ToLocalTime():f}")
        Else
            Console.WriteLine($"Cannot parse '{inputValue}'")
        End If
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       '2014-06-14T13:32:00.0000000Z' --> 14 June 2014 14:32
'       '2014-07-11T06:49:00.0000000Z' --> 11 July 2014 07:49
'       '2015-01-10T09:16:00.0000000Z' --> 10 January 2015 09:16
'       '2014-12-21T05:45:00.0000000Z' --> 21 December 2014 05:45
'       '2014-06-02T22:14:00.0000000Z' --> 02 June 2014 23:14
'       Restored dates...

永続化する値が整数Persisting values as integers

日付と時刻として永続化することができます、Int64タイマー刻みの数を表す値です。You can persist a date and time as an Int64 value that represents a number of ticks. この場合、システムのカルチャを考慮していない、DateTime値が永続化され、上に復元します。In this case, you don't have to consider the culture of the systems the DateTime values are persisted and restored on.

永続化する、DateTimeを整数としての値。To persist a DateTime value as an integer:

  • 場合、DateTime値の 1 つの瞬間を表す、呼び出して UTC に変換、ToUniversalTimeメソッド。If the DateTime values represent single moments in time, convert them to UTC by calling the ToUniversalTime method.
  • によって表されたタイマー刻みの数を取得、DateTime値からそのTicksプロパティ。Retrieve the number of ticks represented by the DateTime value from its Ticks property.

復元する、DateTimeを整数として永続化された値。To restore a DateTime value that has been persisted as an integer:

  1. 新しいインスタンスを作成DateTimeオブジェクトを渡すことによって、Int64値をDateTime(Int64)コンス トラクター。Instantiate a new DateTime object by passing the Int64 value to the DateTime(Int64) constructor.
  2. 場合、DateTime値は、特定の時点を表す、変換、UTC から現地時刻に呼び出すことによって、ToLocalTimeメソッド。If the DateTime value represents a single moment in time, convert it from UTC to the local time by calling the ToLocalTime method.

次の例の配列を保持するDateTime値が、米国のシステム上での整数表示します。The following example persists an array of DateTime values as integers on a system in the U.S. Pacific Time zone. UTC ゾーンのシステム上で、それを復元します。It restores it on a system in the UTC zone. 整数を含むファイルが含まれています、Int32の合計数を示す値Int64直後にその値。The file that contains the integers includes an Int32 value that indicates the total number of Int64 values that immediately follow it.

public static void PersistAsIntegers()
{
    SaveDatesAsInts();
    RestoreDatesAsInts();
}

private static void SaveDatesAsInts()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    long[] ticks = new long[dates.Length];
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        ticks[ctr] = dates[ctr].ToUniversalTime().Ticks;
    }
    FileStream fs = new FileStream(filenameInts, FileMode.Create);
    BinaryWriter bw = new BinaryWriter(fs);
    bw.Write(ticks.Length);
    foreach (var tick in ticks)
        bw.Write(tick);

    bw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesAsInts()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    FileStream fs = new FileStream(filenameInts, FileMode.Open);
    BinaryReader br = new BinaryReader(fs);
    int items;
    DateTime[] dates;

    try
    {
        items = br.ReadInt32();
        dates = new DateTime[items];

        for (int ctr = 0; ctr < items; ctr++)
        {
            long ticks = br.ReadInt64();
            dates[ctr] = new DateTime(ticks).ToLocalTime();
        }
    }
    catch (EndOfStreamException)
    {
        Console.WriteLine("File corruption detected. Unable to restore data...");
        return;
    }
    catch (IOException)
    {
        Console.WriteLine("Unspecified I/O error. Unable to restore data...");
        return;
    }
    // Thrown during array initialization.
    catch (OutOfMemoryException)
    {
        Console.WriteLine("File corruption detected. Unable to restore data...");
        return;
    }
    finally
    {
        br.Close();
    }

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    foreach (var value in dates)
        Console.WriteLine(value.ToString("f"));

    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       14 June 2014 14:32
//       11 July 2014 07:49
//       10 January 2015 09:16
//       21 December 2014 05:45
//       02 June 2014 23:14
//       Restored dates...
Public Sub PersistAsIntegers()
    SaveDatesAsIntegers()
    RestoreDatesAsIntegers()
End Sub

Private Sub SaveDatesAsIntegers()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    Dim ticks(dates.Length - 1) As Long
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        ticks(ctr) = dates(ctr).ToUniversalTime().Ticks
    Next
    Dim fs As New FileStream(filenameInts, FileMode.Create)
    Dim bw As New BinaryWriter(fs)
    bw.Write(ticks.Length)
    For Each tick In ticks
        bw.Write(tick)
    Next
    bw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsIntegers()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim fs As New FileStream(filenameInts, FileMode.Open)
    Dim br As New BinaryReader(fs)
    Dim items As Integer
    Dim dates() As DateTime

    Try
        items = br.ReadInt32()
        ReDim dates(items - 1)

        For ctr As Integer = 0 To items - 1
            Dim ticks As Long = br.ReadInt64()
            dates(ctr) = New DateTime(ticks).ToLocalTime()
        Next
    Catch e As EndOfStreamException
        Console.WriteLine("File corruption detected. Unable to restore data...")
        Exit Sub
    Catch e As IOException
        Console.WriteLine("Unspecified I/O error. Unable to restore data...")
        Exit Sub
    Catch e As OutOfMemoryException     'Thrown in array initialization.
        Console.WriteLine("File corruption detected. Unable to restore data...")
        Exit Sub
    Finally
        br.Close()
    End Try

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each value In dates
        Console.WriteLine(value.ToString("f"))
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       14 June 2014 14:32
'       11 July 2014 07:49
'       10 January 2015 09:16
'       21 December 2014 05:45
'       02 June 2014 23:14
'       Restored dates...

DateTime 値をシリアル化します。Serializing DateTime values

永続化することができますDateTime値ストリームまたはファイルと、復元にシリアル化を通じてそれらを逆シリアル化します。You can persist DateTime values through serialization to a stream or file, and then restore them through deserialization. DateTime データは、いくつかの指定したオブジェクトの形式でシリアル化します。DateTime data is serialized in some specified object format. 逆シリアル化されたときに、オブジェクトが復元されます。The objects are restored when they are deserialized. フォーマッタまたはシリアライザーなどXmlSerializerまたはBinaryFormatter、シリアル化および逆シリアル化のプロセスを処理します。A formatter or serializer, such as XmlSerializer or BinaryFormatter, handles the process of serialization and deserialization. シリアル化と、.NET Framework でサポートされているシリアル化の種類の詳細については、次を参照してください。シリアル化します。For more information about serialization and the types of serialization supported by the .NET Framework, see Serialization.

次の例では、XmlSerializerクラスをシリアル化および逆シリアル化DateTime値。The following example uses the XmlSerializer class to serialize and deserialize DateTime values. 値は、21 世紀のすべての閏年日を表します。The values represent all leap year days in the twenty-first century. 出力は、例では、現在のカルチャが英語 (英国) システムで実行している場合、結果を表します。The output represents the result if the example is run on a system whose current culture is English (Great Britain). した逆シリアル化するため、DateTimeオブジェクト自体のコードは、日付と時刻の形式のカルチャの違いを処理する必要はありません。Because you've deserialized the DateTime object itself, the code doesn't have to handle cultural differences in date and time formats.

public static void PersistAsXML()
{
    // Serialize the data.
    List<DateTime> leapYears = new List<DateTime>();
    for (int year = 2000; year <= 2100; year += 4)
    {
        if (DateTime.IsLeapYear(year))
            leapYears.Add(new DateTime(year, 2, 29));
    }
    DateTime[] dateArray = leapYears.ToArray();

    XmlSerializer serializer = new XmlSerializer(dateArray.GetType());
    TextWriter sw = new StreamWriter(filenameXml);

    try
    {
        serializer.Serialize(sw, dateArray);
    }
    catch (InvalidOperationException e)
    {
        Console.WriteLine(e.InnerException.Message);
    }
    finally
    {
        if (sw != null) sw.Close();
    }

    // Deserialize the data.
    DateTime[] deserializedDates;
    using (FileStream fs = new FileStream(filenameXml, FileMode.Open))
    {
        deserializedDates = (DateTime[])serializer.Deserialize(fs);
    }

    // Display the dates.
    Console.WriteLine($"Leap year days from 2000-2100 on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    int nItems = 0;
    foreach (var dat in deserializedDates)
    {
        Console.Write($"   {dat:d}     ");
        nItems++;
        if (nItems % 5 == 0)
            Console.WriteLine();
    }
}
// The example displays the following output:
//    Leap year days from 2000-2100 on an en-GB system:
//       29/02/2000       29/02/2004       29/02/2008       29/02/2012       29/02/2016
//       29/02/2020       29/02/2024       29/02/2028       29/02/2032       29/02/2036
//       29/02/2040       29/02/2044       29/02/2048       29/02/2052       29/02/2056
//       29/02/2060       29/02/2064       29/02/2068       29/02/2072       29/02/2076
//       29/02/2080       29/02/2084       29/02/2088       29/02/2092       29/02/2096
Public Sub PersistAsXml()
    ' Serialize the data.
    Dim leapYears As New List(Of DateTime)()
    For year As Integer = 2000 To 2100 Step 4
        If Date.IsLeapYear(year) Then
            leapYears.Add(New Date(year, 2, 29))
        End If
    Next
    Dim dateArray() As DateTime = leapYears.ToArray()

    Dim serializer As New XmlSerializer(dateArray.GetType())
    Dim sw As TextWriter = New StreamWriter(filenameXml)

    Try
        serializer.Serialize(sw, dateArray)
    Catch e As InvalidOperationException
        Console.WriteLine(e.InnerException.Message)
    Finally
        If sw IsNot Nothing Then sw.Close()
    End Try

    ' Deserialize the data.
    Dim deserializedDates() As Date
    Using fs As New FileStream(filenameXml, FileMode.Open)
        deserializedDates = CType(serializer.Deserialize(fs), Date())
    End Using

    ' Display the dates.
    Console.WriteLine($"Leap year days from 2000-2100 on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    Dim nItems As Integer
    For Each dat In deserializedDates
        Console.Write($"   {dat:d}     ")
        nItems += 1
        If nItems Mod 5 = 0 Then Console.WriteLine()
    Next
End Sub
' The example displays the following output:
'    Leap year days from 2000-2100 on an en-GB system:
'       29/02/2000       29/02/2004       29/02/2008       29/02/2012       29/02/2016
'       29/02/2020       29/02/2024       29/02/2028       29/02/2032       29/02/2036
'       29/02/2040       29/02/2044       29/02/2048       29/02/2052       29/02/2056
'       29/02/2060       29/02/2064       29/02/2068       29/02/2072       29/02/2076
'       29/02/2080       29/02/2084       29/02/2088       29/02/2092       29/02/2096

前の例では、時刻情報は含まれません。The previous example doesn't include time information. 場合、 DateTime 、現地時刻から UTC に変換を呼び出すことによってシリアル化する前に、値が特定の時点を表しは、現地時刻で表されます、ToUniversalTimeメソッド。If a DateTime value represents a moment in time and is expressed as a local time, convert it from local time to UTC before serializing it by calling the ToUniversalTime method. この逆シリアル化する変換 UTC から現地時刻に呼び出すことによって、ToLocalTimeメソッド。After you deserialize it, convert it from UTC to local time by calling the ToLocalTime method. 次の例では、BinaryFormatterクラスをシリアル化するDateTime米国内のシステム上のデータ太平洋標準時ゾーン、米国内のシステムで逆シリアル化するにはサーバーの全体の標準のゾーンです。The following example uses the BinaryFormatter class to serialize DateTime data on a system in the U.S. Pacific Standard Time zone and to deserialize it on a system in the U.S. Central Standard zone.

public static void PersistBinary()
{
    SaveDatesBinary();
    RestoreDatesBinary();
}

private static void SaveDatesBinary()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    FileStream fs = new FileStream(filenameBin, FileMode.Create);
    BinaryFormatter bin = new BinaryFormatter();

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        dates[ctr] = dates[ctr].ToUniversalTime();
    }
    bin.Serialize(fs, dates);
    fs.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesBinary()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

    FileStream fs = new FileStream(filenameBin, FileMode.Open);
    BinaryFormatter bin = new BinaryFormatter();
    DateTime[] dates = (DateTime[])bin.Deserialize(fs);
    fs.Close();

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    foreach (var value in dates)
        Console.WriteLine(value.ToLocalTime().ToString("f"));

    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC-6:00) Central Time (US & Canada)
//       The dates on an en-GB system:
//       14 June 2014 08:32
//       11 July 2014 01:49
//       10 January 2015 03:16
//       20 December 2014 23:45
//       02 June 2014 17:14
//       Restored dates...
Public Sub PersistBinary()
    SaveDatesBinary()
    RestoreDatesBinary()
End Sub

Private Sub SaveDatesBinary()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim fs As New FileStream(filenameBin, FileMode.Create)
    Dim bin As New BinaryFormatter()

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine("The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        dates(ctr) = dates(ctr).ToUniversalTime()
    Next
    bin.Serialize(fs, dates)
    fs.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesBinary()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine("Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

    Dim fs As New FileStream(filenameBin, FileMode.Open)
    Dim bin As New BinaryFormatter()
    Dim dates() As DateTime = DirectCast(bin.Deserialize(fs), Date())
    fs.Close()

    Console.WriteLine("The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each value In dates
        Console.WriteLine(value.ToLocalTime().ToString("f"))
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC-6:00) Central Time (US & Canada)
'       The dates on an en-GB system:
'       14 June 2014 08:32
'       11 July 2014 01:49
'       10 January 2015 03:16
'       20 December 2014 11:45
'       02 June 2014 17:14
'       Restored dates...

DateTime とタイム ゾーンのデータをシリアル化します。Serializing DateTime and time zone data

すべての前の例のように仮定DateTimeの値がローカル時刻として表現されます。The previous examples all assumed that DateTime values are expressed as local times. コードは、ソースとターゲット システムで、同じ時間を反映するために UTC と現地時刻までの値を変換します。The code converted the values between UTC and local time so they reflect the same moment in time on the source and target systems. DateTime 値は、local 以外のタイム ゾーンと UTC 時間で時間を反映も可能性があります。DateTime values may also reflect moments in time in a time zone other than local and UTC. DateTime構造はタイム ゾーンに対応していない、両方のシリアル化する必要は、DateTime値とTimeZoneInfoそのタイム ゾーンを表すオブジェクト。Because the DateTime structure is not time zone-aware, you have to serialize both the DateTime value and the TimeZoneInfo object that represents its time zone. フィールドには、両方の種類を作成、DateTime値とそのタイム ゾーン。Create a type whose fields include both the DateTime value and its time zone. 次の例では、定義、DateWithTimeZone構造体。The following example defines a DateWithTimeZone structure.

using System;

namespace DateTimeExtensions
{
    [Serializable]
    public struct DateWithTimeZone
    {
        private TimeZoneInfo tz;
        private DateTime dt;

        public DateWithTimeZone(DateTime dateValue, TimeZoneInfo timeZone)
        {
            dt = dateValue;
            if (timeZone == null)
                tz = TimeZoneInfo.Local;
            else
                tz = timeZone;
        }

        public TimeZoneInfo TimeZone
        {
            get { return (tz); }
            set { tz = value; }
        }

        public DateTime DateTime
        {
            get { return (dt); }
            set { dt = value; }
        }
    }
}
Namespace DateTimeExtensions
    <Serializable> Public Structure DateWithTimeZone
        Private tz As TimeZoneInfo
        Private dt As DateTime

        Public Sub New(dateValue As DateTime, timeZone As TimeZoneInfo)
            dt = dateValue
            If timeZone Is Nothing Then
                tz = TimeZoneInfo.Local
            Else
                tz = timeZone
            End If
        End Sub

        Public Property TimeZone As TimeZoneInfo
            Get
                Return tz
            End Get
            Set
                tz = Value
            End Set
        End Property

        Public Property DateTime As Date
            Get
                Return dt
            End Get
            Set
                dt = Value
            End Set
        End Property
    End Structure
End Namespace

重要

DateWithTimeZone構造が配列の逆シリアル化およびシリアル化する次の 2 つの例についてで使用されるDateWithTimeZoneオブジェクト。The DateWithTimeZone structure is used in the next two examples, which serialize and deserialize an array of DateWithTimeZone objects. この記事の例のセット全体のソースを表示するにはいずれかでVisual Basicまたはc# GitHub の docs リポジトリから。You can view the source for the entire set of examples from this article in either Visual Basic or C# from the docs repository on GitHub.

使用して、DateWithTimeZone構造、日付と時刻のタイム ゾーン情報と共に保存できます。By using the DateWithTimeZone structure, you can then persist date and time along with time zone information. 次の例では、BinaryFormatterの配列をシリアル化するクラスDateWithTimeZoneオブジェクト。The following example uses the BinaryFormatter class to serialize an array of DateWithTimeZone objects.

public static void SaveDateWithTimeZone()
{
    DateWithTimeZone[] dates = { new DateWithTimeZone(new DateTime(2014, 8, 9, 19, 30, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 15, 19, 0, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 22, 19, 30, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 28, 19, 0, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")) };
    FileStream fs = new FileStream(@".\Schedule.bin", FileMode.Create);
    BinaryFormatter formatter = new BinaryFormatter();
    try
    {
        formatter.Serialize(fs, dates);
        // Display dates.
        foreach (var date in dates)
        {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine($"{date.DateTime} {(tz.IsDaylightSavingTime(date.DateTime) ? tz.DaylightName : tz.StandardName)}");
        }
    }
    catch (SerializationException e)
    {
        Console.WriteLine($"Serialization failed. Reason: {e.Message}");
    }
    finally
    {
        if (fs != null) fs.Close();
    }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time
Public Sub SaveDateWithTimeZone()
    Dim dates() As DateWithTimeZone = {New DateWithTimeZone(#8/9/2014 7:30PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  New DateWithTimeZone(#8/15/2014 7:00PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),
                                  New DateWithTimeZone(#8/22/2014 7:30PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  New DateWithTimeZone(#8/28/2014 7:00PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"))}
    Dim fs As New FileStream(".\Schedule.bin", FileMode.Create)
    Dim formatter As New BinaryFormatter()
    Try
        formatter.Serialize(fs, dates)
    Catch e As SerializationException
        Console.WriteLine($"Serialization failed. Reason: {e.Message}")
    Finally
        If fs IsNot Nothing Then fs.Close()
    End Try
    ' Display dates.
    For Each dateInfo In dates
        Dim tz As TimeZoneInfo = dateInfo.TimeZone
        Console.WriteLine($"{dateInfo.DateTime} {If(tz.IsDaylightSavingTime(dateInfo.DateTime), tz.DaylightName, tz.StandardName)}")
    Next
End Sub
' The example displays the following output:
'       8/9/2014 7:30:00 PM Eastern Daylight Time
'       8/15/2014 7:00:00 PM Pacific Daylight Time
'       8/22/2014 7:30:00 PM Eastern Daylight Time
'       8/28/2014 7:00:00 PM Eastern Daylight Time

次の例を呼び出して、BinaryFormatter.Deserializeメソッドを逆シリアル化します。The following example then calls the BinaryFormatter.Deserialize method to deserialize it.

public static void RestoreDateWithTimeZone()
{
    const string filename = @".\Schedule.bin";
    FileStream fs;
    if (File.Exists(filename))
        fs = new FileStream(filename, FileMode.Open);
    else
    {
        Console.WriteLine("Unable to find file to deserialize.");
        return;
    }

    BinaryFormatter formatter = new BinaryFormatter();
    DateWithTimeZone[] dates;
    try
    {
        dates = (DateWithTimeZone[])formatter.Deserialize(fs);
        // Display dates.
        foreach (var date in dates)
        {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine($"{ date.DateTime} {(tz.IsDaylightSavingTime(date.DateTime) ? tz.DaylightName : tz.StandardName)}");
        }
    }
    catch (SerializationException e)
    {
        Console.WriteLine($"Deserialization failed. Reason: {e.Message}");
    }
    finally
    {
        if (fs != null) fs.Close();
    }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time
Public Sub RestoreDateWithTimeZone()
    Dim fs As FileStream
    If File.Exists(filename) Then
        fs = New FileStream(filename, FileMode.Open)
    Else
        Console.WriteLine("Unable to find file to deserialize.")
        Exit Sub
    End If

    Dim formatter As New BinaryFormatter()
    Dim dates() As DateWithTimeZone = Nothing
    Try
        dates = DirectCast(formatter.Deserialize(fs), DateWithTimeZone())
        ' Display dates.
        For Each dateInfo In dates
            Dim tz As TimeZoneInfo = dateInfo.TimeZone
            Console.WriteLine($"{dateInfo.DateTime} {If(tz.IsDaylightSavingTime(dateInfo.DateTime), tz.DaylightName, tz.StandardName)}")
        Next
    Catch e As SerializationException
        Console.WriteLine("Deserialization failed. Reason: {e.Message}")
    Finally
        If fs IsNot Nothing Then fs.Close()
    End Try
End Sub
' The example displays the following output:
'       8/9/2014 7:30:00 PM Eastern Daylight Time
'       8/15/2014 7:00:00 PM Pacific Daylight Time
'       8/22/2014 7:30:00 PM Eastern Daylight Time
'       8/28/2014 7:00:00 PM Eastern Daylight Time

DateTime とします。TimeSpanDateTime vs. TimeSpan

DateTimeTimeSpanを異なる値型、DateTime時間の瞬間を表すのに対して、TimeSpan時間間隔を表します。The DateTime and TimeSpan value types differ in that a DateTime represents an instant in time whereas a TimeSpan represents a time interval. 1 つのインスタンスを減算するDateTimeを取得する別のTimeSpan時間間隔を表すオブジェクト。You can subtract one instance of DateTime from another to obtain a TimeSpan object that represents the time interval between them. 正の値を追加またはTimeSpan現在DateTimeを取得する、DateTime将来の日付を表す値です。Or you could add a positive TimeSpan to the current DateTime to obtain a DateTime value that represents a future date.

追加またはからの時間間隔を減算することができます、DateTimeオブジェクト。You can add or subtract a time interval from a DateTime object. 時間間隔が負または正の値を指定できなど、タイマー刻み単位で表現することができます (秒単位) として、または、TimeSpanオブジェクト。Time intervals can be negative or positive, and they can be expressed in units such as ticks, seconds, or as a TimeSpan object.

許容範囲内で等しいかどうかを比較します。Comparing for equality within tolerance

等価比較のDateTime値は、正確です。Equality comparisons for DateTime values are exact. つまり、2 つの値は、同じ数の等しいと見なされるタイマー刻みとして表す必要があります。That means two values must be expressed as the same number of ticks to be considered equal. 有効桁数が、多くの場合、不要なことかも多くのアプリケーションが正しくありません。That precision is often unecessary or even incorrect for many applications. 場合をテストする多くの場合、DateTimeオブジェクトがほぼ同じします。Often, you want to test if DateTime objects are roughly equal.

次の例では、ほぼを比較する方法と同じDateTimeします。The following example demonstrates how to compare roughly equivalent DateTime . 宣言と等しい場合は、小さな違いの余白を受け入れます。It accepts a small margin of difference when declaring them equal.

public static bool RoughlyEquals(DateTime time, DateTime timeWithWindow, int windowInSeconds, int frequencyInSeconds)
{
    long delta = (long)((TimeSpan)(timeWithWindow - time)).TotalSeconds % frequencyInSeconds;
    delta = delta > windowInSeconds ? frequencyInSeconds - delta : delta;
    return Math.Abs(delta) < windowInSeconds;
}

public static void TestRoughlyEquals()
{
    int window = 10;
    int freq = 60 * 60 * 2; // 2 hours;

    DateTime d1 = DateTime.Now;

    DateTime d2 = d1.AddSeconds(2 * window);
    DateTime d3 = d1.AddSeconds(-2 * window);
    DateTime d4 = d1.AddSeconds(window / 2);
    DateTime d5 = d1.AddSeconds(-window / 2);

    DateTime d6 = (d1.AddHours(2)).AddSeconds(2 * window);
    DateTime d7 = (d1.AddHours(2)).AddSeconds(-2 * window);
    DateTime d8 = (d1.AddHours(2)).AddSeconds(window / 2);
    DateTime d9 = (d1.AddHours(2)).AddSeconds(-window / 2);

    Console.WriteLine($"d1 ({d1}) ~= d1 ({d1}): {RoughlyEquals(d1, d1, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d2 ({d2}): {RoughlyEquals(d1, d2, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d3 ({d3}): {RoughlyEquals(d1, d3, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d4 ({d4}): {RoughlyEquals(d1, d4, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d5 ({d5}): {RoughlyEquals(d1, d5, window, freq)}");

    Console.WriteLine($"d1 ({d1}) ~= d6 ({d6}): {RoughlyEquals(d1, d6, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d7 ({d7}): {RoughlyEquals(d1, d7, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d8 ({d8}): {RoughlyEquals(d1, d8, window, freq)}");
    Console.WriteLine($"d1 ({d1}) ~= d9 ({d9}): {RoughlyEquals(d1, d9, window, freq)}");
}
// The example displays output similar to the following:
//    d1 (1/28/2010 9:01:26 PM) ~= d1 (1/28/2010 9:01:26 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d2 (1/28/2010 9:01:46 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d3 (1/28/2010 9:01:06 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d4 (1/28/2010 9:01:31 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d5 (1/28/2010 9:01:21 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d6 (1/28/2010 11:01:46 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d7 (1/28/2010 11:01:06 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d8 (1/28/2010 11:01:31 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d9 (1/28/2010 11:01:21 PM): True
Public Shared Function RoughlyEquals(time As DateTime, timeWithWindow As DateTime,
                             windowInSeconds As Integer,
                             frequencyInSeconds As Integer) As Boolean
    Dim delta As Long = (timeWithWindow.Subtract(time)).TotalSeconds _
                                            Mod frequencyInSeconds

    If delta > windowInSeconds Then
        delta = frequencyInSeconds - delta
    End If

    Return Math.Abs(delta) < windowInSeconds
End Function

Public Shared Sub TestRoughlyEquals()
    Dim window As Integer = 10
    Dim freq As Integer = 60 * 60 * 2 ' 2 hours;
    Dim d1 As DateTime = DateTime.Now

    Dim d2 As DateTime = d1.AddSeconds((2 * window))
    Dim d3 As DateTime = d1.AddSeconds((-2 * window))
    Dim d4 As DateTime = d1.AddSeconds((window / 2))
    Dim d5 As DateTime = d1.AddSeconds((-window / 2))

    Dim d6 As DateTime = d1.AddHours(2).AddSeconds((2 * window))
    Dim d7 As DateTime = d1.AddHours(2).AddSeconds((-2 * window))
    Dim d8 As DateTime = d1.AddHours(2).AddSeconds((window / 2))
    Dim d9 As DateTime = d1.AddHours(2).AddSeconds((-window / 2))

    Console.WriteLine($"d1 ({d1}) ~= d1 ({d1}): {RoughlyEquals(d1, d1, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d2 ({d2}): {RoughlyEquals(d1, d2, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d3 ({d3}): {RoughlyEquals(d1, d3, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d4 ({d4}): {RoughlyEquals(d1, d4, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d5 ({d5}): {RoughlyEquals(d1, d5, window, freq)}")

    Console.WriteLine($"d1 ({d1}) ~= d6 ({d6}): {RoughlyEquals(d1, d6, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d7 ({d7}): {RoughlyEquals(d1, d7, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d8 ({d8}): {RoughlyEquals(d1, d8, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d9 ({d9}): {RoughlyEquals(d1, d9, window, freq)}")
End Sub
' The example displays output similar to the following:
'    d1 (1/28/2010 9:01:26 PM) ~= d1 (1/28/2010 9:01:26 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d2 (1/28/2010 9:01:46 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d3 (1/28/2010 9:01:06 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d4 (1/28/2010 9:01:31 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d5 (1/28/2010 9:01:21 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d6 (1/28/2010 11:01:46 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d7 (1/28/2010 11:01:06 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d8 (1/28/2010 11:01:31 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d9 (1/28/2010 11:01:21 PM): True

COM 相互運用機能に関する考慮事項COM interop considerations

ADateTimeラウンドト リップさせるには、COM アプリケーションに転送し、管理対象のアプリケーションに転送される値といいます。A DateTime value that is transferred to a COM application, then is transferred back to a managed application, is said to round-trip. ただし、DateTime時刻のみを指定する値は予想どおりにラウンドト リップさせる。However, a DateTime value that specifies only a time does not round-trip as you might expect.

ラウンドト リップする午後 3 時、最後の日付と時刻など、時刻のみが西暦 1899 年 12 月 30 日の場合If you round-trip only a time, such as 3 P.M., the final date and time is December 30, 1899 C.E. 午後 3 時、年 1 月 1 日ではなく紀元 0001at 3:00 P.M., instead of January, 1, 0001 C.E. 午後 3時 00分at 3:00 P.M. .NET Framework および COM は、既定の日付、時刻のみが指定されている場合を想定しています。The .NET Framework and COM assume a default date when only a time is specified. ただし、COM システムでは、.NET Framework には、西暦 0001 年 1 月 1 日の基準日が前提としています中に、西暦、1899 年 12 月 30 日の基本の日が想定していますHowever, the COM system assumes a base date of December 30, 1899 C.E., while the .NET Framework assumes a base date of January, 1, 0001 C.E.

COM に .NET Framework から時刻のみが渡されると、特別な処理は実行時間を COM で使用される形式に変換します。When only a time is passed from the .NET Framework to COM, special processing is performed that converts the time to the format used by COM. .NET Framework に時刻のみが COM から渡されるが破損する可能性が正当な日付と時刻、1899 年 12 月 30 日までにするために特別な処理が実行されません。When only a time is passed from COM to the .NET Framework, no special processing is performed because that would corrupt legitimate dates and times on or before December 30, 1899. 日付は、COM からそのラウンドト リップを起動する場合、.NET Framework および COM、日付を保持します。If a date starts its round-trip from COM, the .NET Framework and COM preserve the date.

.NET Framework および COM の動作がいる場合、アプリケーションのラウンドト リップをことを意味、DateTimeのみ、時間を指定する、変更または最後から誤った日付を無視する、アプリケーションを忘れないでくださいDateTimeオブジェクト。The behavior of the .NET Framework and COM means that if your application round-trips a DateTime that only specifies a time, your application must remember to modify or ignore the erroneous date from the final DateTime object.

Constructors

DateTime(Int64) DateTime(Int64) DateTime(Int64) DateTime(Int64)

DateTime 構造体の新しいインスタンスを、指定したタイマー刻み数に初期化します。 Initializes a new instance of the DateTime structure to a specified number of ticks.

DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind)

DateTime 構造体の新しいインスタンスを、指定したタイマー刻み数と世界協定時刻 (UTC) または現地時刻に初期化します。 Initializes a new instance of the DateTime structure to a specified number of ticks and to Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32) DateTime(Int32, Int32, Int32) DateTime(Int32, Int32, Int32) DateTime(Int32, Int32, Int32)

DateTime 構造体の新しいインスタンスを、指定した年、月、および日に初期化します。 Initializes a new instance of the DateTime structure to the specified year, month, and day.

DateTime(Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Calendar)

DateTime 構造体の新しいインスタンスを、指定した暦の指定した年、月、および日に初期化します。 Initializes a new instance of the DateTime structure to the specified year, month, and day for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32)

DateTime 構造体の新しいインスタンスを、指定した年、月、日、時、分、および秒に初期化します。 Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

DateTime 構造体の新しいインスタンスを、指定した年、月、日、時、分、秒、および世界協定時刻 (UTC) または現地時刻に初期化します。 Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

DateTime 構造体の新しいインスタンスを、指定した暦の指定した年、月、日、時、分、および秒に初期化します。 Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)

DateTime 構造体の新しいインスタンスを、指定した年、月、日、時、分、秒、およびミリ秒に初期化します。 Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and millisecond.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

DateTime 構造体の新しいインスタンスを、指定した年、月、日、時、分、秒、ミリ秒、および世界協定時刻 (UTC) または現地時刻に初期化します。 Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

DateTime 構造体の新しいインスタンスを、指定した暦の指定した年、月、日、時、分、秒、およびミリ秒に初期化します。 Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and millisecond for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)

DateTime 構造体の新しいインスタンスを、指定した暦の指定した年、月、日、時、分、秒、ミリ秒、および世界協定時刻 (UTC) または現地時刻に初期化します。 Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time for the specified calendar.

Fields

MaxValue MaxValue MaxValue MaxValue

DateTime の最大有効値を表します。 Represents the largest possible value of DateTime. このフィールドは読み取り専用です。 This field is read-only.

MinValue MinValue MinValue MinValue

DateTime の最小有効値を表します。 Represents the smallest possible value of DateTime. このフィールドは読み取り専用です。 This field is read-only.

UnixEpoch UnixEpoch UnixEpoch UnixEpoch

Properties

Date Date Date Date

このインスタンスの日付の部分を取得します。 Gets the date component of this instance.

Day Day Day Day

このインスタンスで表される月の日付を取得します。 Gets the day of the month represented by this instance.

DayOfWeek DayOfWeek DayOfWeek DayOfWeek

このインスタンスで表される曜日を取得します。 Gets the day of the week represented by this instance.

DayOfYear DayOfYear DayOfYear DayOfYear

このインスタンスで表される年間積算日を取得します。 Gets the day of the year represented by this instance.

Hour Hour Hour Hour

このインスタンスで表される日付の時間の部分を取得します。 Gets the hour component of the date represented by this instance.

Kind Kind Kind Kind

このインスタンスが表す時刻の種類 (現地時刻、世界協定時刻 (UTC)、または、そのどちらでもない) を示す値を取得します。 Gets a value that indicates whether the time represented by this instance is based on local time, Coordinated Universal Time (UTC), or neither.

Millisecond Millisecond Millisecond Millisecond

このインスタンスで表される日付のミリ秒の部分を取得します。 Gets the milliseconds component of the date represented by this instance.

Minute Minute Minute Minute

このインスタンスで表される日付の分の部分を取得します。 Gets the minute component of the date represented by this instance.

Month Month Month Month

このインスタンスで表される日付の月の部分を取得します。 Gets the month component of the date represented by this instance.

Now Now Now Now

コンピューター上の現在の日時を現地時刻で表した DateTime オブジェクトを取得します。 Gets a DateTime object that is set to the current date and time on this computer, expressed as the local time.

Second Second Second Second

このインスタンスで表される日付の秒の部分を取得します。 Gets the seconds component of the date represented by this instance.

Ticks Ticks Ticks Ticks

このインスタンスの日付と時刻を表すタイマー刻み数を取得します。 Gets the number of ticks that represent the date and time of this instance.

TimeOfDay TimeOfDay TimeOfDay TimeOfDay

このインスタンスの時刻を取得します。 Gets the time of day for this instance.

Today Today Today Today

現在の日付を取得します。 Gets the current date.

UtcNow UtcNow UtcNow UtcNow

コンピューター上の現在の日時を世界協定時刻 (UTC) で表した DateTime オブジェクトを取得します。 Gets a DateTime object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC).

Year Year Year Year

このインスタンスで表される日付の年の部分を取得します。 Gets the year component of the date represented by this instance.

Methods

Add(TimeSpan) Add(TimeSpan) Add(TimeSpan) Add(TimeSpan)

このインスタンスの値に、指定された TimeSpan の値を加算した新しい DateTime を返します。 Returns a new DateTime that adds the value of the specified TimeSpan to the value of this instance.

AddDays(Double) AddDays(Double) AddDays(Double) AddDays(Double)

このインスタンスの値に、指定された日数を加算した新しい DateTime を返します。 Returns a new DateTime that adds the specified number of days to the value of this instance.

AddHours(Double) AddHours(Double) AddHours(Double) AddHours(Double)

このインスタンスの値に、指定された時間数を加算した新しい DateTime を返します。 Returns a new DateTime that adds the specified number of hours to the value of this instance.

AddMilliseconds(Double) AddMilliseconds(Double) AddMilliseconds(Double) AddMilliseconds(Double)

このインスタンスの値に、指定されたミリ秒数を加算した新しい DateTime を返します。 Returns a new DateTime that adds the specified number of milliseconds to the value of this instance.

AddMinutes(Double) AddMinutes(Double) AddMinutes(Double) AddMinutes(Double)

このインスタンスの値に、指定された分数を加算した新しい DateTime を返します。 Returns a new DateTime that adds the specified number of minutes to the value of this instance.

AddMonths(Int32) AddMonths(Int32) AddMonths(Int32) AddMonths(Int32)

このインスタンスの値に、指定された月数を加算した新しい DateTime を返します。 Returns a new DateTime that adds the specified number of months to the value of this instance.

AddSeconds(Double) AddSeconds(Double) AddSeconds(Double) AddSeconds(Double)

このインスタンスの値に、指定された秒数を加算した新しい DateTime を返します。 Returns a new DateTime that adds the specified number of seconds to the value of this instance.

AddTicks(Int64) AddTicks(Int64) AddTicks(Int64) AddTicks(Int64)

このインスタンスの値に、指定されたタイマー刻みの数を加算した新しい DateTime を返します。 Returns a new DateTime that adds the specified number of ticks to the value of this instance.

AddYears(Int32) AddYears(Int32) AddYears(Int32) AddYears(Int32)

このインスタンスの値に、指定された年数を加算した新しい DateTime を返します。 Returns a new DateTime that adds the specified number of years to the value of this instance.

Compare(DateTime, DateTime) Compare(DateTime, DateTime) Compare(DateTime, DateTime) Compare(DateTime, DateTime)

DateTime の 2 つのインスタンスを比較し、第 1 のインスタンスが第 2 のインスタンスよりも前か、同じか、それとも後かを示す整数を返します。 Compares two instances of DateTime and returns an integer that indicates whether the first instance is earlier than, the same as, or later than the second instance.

CompareTo(DateTime) CompareTo(DateTime) CompareTo(DateTime) CompareTo(DateTime)

このインスタンスの値と指定した DateTime の値を比較し、このインスタンスの値が指定した DateTime の値よりも前か、同じか、または後かを示す整数を返します。 Compares the value of this instance to a specified DateTime value and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified DateTime value.

CompareTo(Object) CompareTo(Object) CompareTo(Object) CompareTo(Object)

このインスタンスの値と指定した DateTime の値を含む指定したオブジェクトを比較し、このインスタンスの値が指定した DateTime の値よりも前か、同じか、または後かを示す整数を返します。 Compares the value of this instance to a specified object that contains a specified DateTime value, and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified DateTime value.

DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32)

指定した月および年の日数を返します。 Returns the number of days in the specified month and year.

Equals(DateTime, DateTime) Equals(DateTime, DateTime) Equals(DateTime, DateTime) Equals(DateTime, DateTime)

DateTime の 2 つのインスタンスが同じ日付/時刻値を持っているかどうかを示す値を返します。 Returns a value indicating whether two DateTime instances have the same date and time value.

Equals(DateTime) Equals(DateTime) Equals(DateTime) Equals(DateTime)

このインスタンスの値が、指定した DateTime インスタンスの値と等しいかどうかを示す値を返します。 Returns a value indicating whether the value of this instance is equal to the value of the specified DateTime instance.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

このインスタンスが指定されたオブジェクトに等しいかどうかを示す値を返します。 Returns a value indicating whether this instance is equal to a specified object.

FromBinary(Int64) FromBinary(Int64) FromBinary(Int64) FromBinary(Int64)

64 ビットのバイナリ値を逆シリアル化し、元のシリアル化 DateTime オブジェクトを再構築します。 Deserializes a 64-bit binary value and recreates an original serialized DateTime object.

FromFileTime(Int64) FromFileTime(Int64) FromFileTime(Int64) FromFileTime(Int64)

指定された Windows ファイル時刻を同等の現地時刻に変換します。 Converts the specified Windows file time to an equivalent local time.

FromFileTimeUtc(Int64) FromFileTimeUtc(Int64) FromFileTimeUtc(Int64) FromFileTimeUtc(Int64)

指定された Windows ファイル時刻を同等の UTC 時刻に変換します。 Converts the specified Windows file time to an equivalent UTC time.

FromOADate(Double) FromOADate(Double) FromOADate(Double) FromOADate(Double)

指定した OLE オートメーション日付と等しい DateTime を返します。 Returns a DateTime equivalent to the specified OLE Automation Date.

GetDateTimeFormats() GetDateTimeFormats() GetDateTimeFormats() GetDateTimeFormats()

このインスタンスの値を、標準の日時形式指定子によってサポートされるすべての文字列形式に変換します。 Converts the value of this instance to all the string representations supported by the standard date and time format specifiers.

GetDateTimeFormats(Char) GetDateTimeFormats(Char) GetDateTimeFormats(Char) GetDateTimeFormats(Char)

このインスタンスの値を、指定した標準の日時形式指定子によってサポートされるすべての文字列表記に変換します。 Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier.

GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider)

このインスタンスの値を、標準日時形式指定子および指定したカルチャ固有の書式情報によってサポートされる、すべての文字列形式に変換します。 Converts the value of this instance to all the string representations supported by the standard date and time format specifiers and the specified culture-specific formatting information.

GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider)

このインスタンスの値を、指定した標準日時形式指定子およびカルチャ固有の書式情報によってサポートされる、すべての文字列表記に変換します。 Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier and culture-specific formatting information.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

このインスタンスのハッシュ コードを返します。 Returns the hash code for this instance.

GetTypeCode() GetTypeCode() GetTypeCode() GetTypeCode()

TypeCode 値型の DateTime を返します。 Returns the TypeCode for value type DateTime.

IsDaylightSavingTime() IsDaylightSavingTime() IsDaylightSavingTime() IsDaylightSavingTime()

DateTime のインスタンスが、現在のタイム ゾーンの夏時間の期間内であるかどうかを示します。 Indicates whether this instance of DateTime is within the daylight saving time range for the current time zone.

IsLeapYear(Int32) IsLeapYear(Int32) IsLeapYear(Int32) IsLeapYear(Int32)

指定された年が閏年かどうかを示す値を返します。 Returns an indication whether the specified year is a leap year.

Parse(String) Parse(String) Parse(String) Parse(String)

現在のスレッド カルチャの書式規則を使用して、日付と時刻の文字列形式を等価の DateTime に変換します。 Converts the string representation of a date and time to its DateTime equivalent by using the conventions of the current thread culture.

Parse(String, IFormatProvider) Parse(String, IFormatProvider) Parse(String, IFormatProvider) Parse(String, IFormatProvider)

カルチャ固有の書式情報を使用して、日付と時刻の文字列形式を等価の DateTime に変換します。 Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information.

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles)

カルチャ固有の書式情報と書式スタイルを使用して、日付と時刻の文字列形式を等価の DateTime に変換します。 Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information and a formatting style.

ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider)

指定した書式とカルチャ固有の書式情報を使用して、指定した日付と時刻の文字列形式を等価の DateTime の値に変換します。 Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. 文字列形式の書式は、指定した書式と完全に一致する必要があります。 The format of the string representation must match the specified format exactly.

ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles)
ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。 Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. 文字列形式の書式は、指定した書式と完全に一致する必要があります。それ以外の場合は、例外がスローされます。 The format of the string representation must match the specified format exactly or an exception is thrown.

ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles)

指定した書式の配列、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。 Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. 文字列形式の書式は、指定した書式の少なくとも 1 つと完全に一致する必要があります。それ以外の場合は、例外がスローされます。 The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind)

指定された DateTime と同じタイマー刻みの数を持つ新しい DateTime オブジェクトを、指定された DateTimeKind 値 (現地時刻、世界協定時刻 (UTC)、または、そのいずれでもないことを示す) に基づいて作成します。 Creates a new DateTime object that has the same number of ticks as the specified DateTime, but is designated as either local time, Coordinated Universal Time (UTC), or neither, as indicated by the specified DateTimeKind value.

Subtract(DateTime) Subtract(DateTime) Subtract(DateTime) Subtract(DateTime)

このインスタンスから指定した日付と時刻を減算します。 Subtracts the specified date and time from this instance.

Subtract(TimeSpan) Subtract(TimeSpan) Subtract(TimeSpan) Subtract(TimeSpan)

このインスタンスから指定した期間を減算します。 Subtracts the specified duration from this instance.

ToBinary() ToBinary() ToBinary() ToBinary()

現在の DateTime オブジェクトを 64 ビットのバイナリ値にシリアル化します。後で、この値を使って、DateTime オブジェクトを再構築できます。 Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object.

ToFileTime() ToFileTime() ToFileTime() ToFileTime()

現在の DateTime オブジェクトの値を Windows ファイル時刻に変換します。 Converts the value of the current DateTime object to a Windows file time.

ToFileTimeUtc() ToFileTimeUtc() ToFileTimeUtc() ToFileTimeUtc()

現在の DateTime オブジェクトの値を Windows ファイル時刻に変換します。 Converts the value of the current DateTime object to a Windows file time.

ToLocalTime() ToLocalTime() ToLocalTime() ToLocalTime()

現在の DateTime オブジェクトの値を現地時刻に変換します。 Converts the value of the current DateTime object to local time.

ToLongDateString() ToLongDateString() ToLongDateString() ToLongDateString()

現在の DateTime オブジェクトの値を、それと等価な長い形式の日付の文字列形式に変換します。 Converts the value of the current DateTime object to its equivalent long date string representation.

ToLongTimeString() ToLongTimeString() ToLongTimeString() ToLongTimeString()

現在の DateTime オブジェクトの値を、それと等価な長い形式の時刻の文字列形式に変換します。 Converts the value of the current DateTime object to its equivalent long time string representation.

ToOADate() ToOADate() ToOADate() ToOADate()

このインスタンスの値をそれと等価な OLE オートメーション日付に変換します。 Converts the value of this instance to the equivalent OLE Automation date.

ToShortDateString() ToShortDateString() ToShortDateString() ToShortDateString()

現在の DateTime オブジェクトの値を、それと等価な短い形式の日付の文字列形式に変換します。 Converts the value of the current DateTime object to its equivalent short date string representation.

ToShortTimeString() ToShortTimeString() ToShortTimeString() ToShortTimeString()

現在の DateTime オブジェクトの値を、それと等価な短い形式の時刻の文字列形式に変換します。 Converts the value of the current DateTime object to its equivalent short time string representation.

ToString(String, IFormatProvider) ToString(String, IFormatProvider) ToString(String, IFormatProvider) ToString(String, IFormatProvider)

指定した書式およびカルチャ固有の書式情報を使用して、現在の DateTime オブジェクトの値をそれと等価の文字列形式に変換します。 Converts the value of the current DateTime object to its equivalent string representation using the specified format and culture-specific format information.

ToString(String) ToString(String) ToString(String) ToString(String)

指定した形式および現在のカルチャの書式指定規則を使用して、現在の DateTime オブジェクトの値をそれと等価な文字列形式に変換します。 Converts the value of the current DateTime object to its equivalent string representation using the specified format and the formatting conventions of the current culture.

ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider)

指定したカルチャ固有の書式情報を使用して、現在の DateTime オブジェクトの値をそれと等価な文字列形式に変換します。 Converts the value of the current DateTime object to its equivalent string representation using the specified culture-specific format information.

ToString() ToString() ToString() ToString()

現在のカルチャの書式指定規則を使用して、現在の DateTime オブジェクトの値をそれと等価な文字列形式に変換します。 Converts the value of the current DateTime object to its equivalent string representation using the formatting conventions of the current culture.

ToUniversalTime() ToUniversalTime() ToUniversalTime() ToUniversalTime()

現在の DateTime オブジェクトの値を世界協定時刻 (UTC) に変換します。 Converts the value of the current DateTime object to Coordinated Universal Time (UTC).

TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)
TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
TryParse(String, DateTime) TryParse(String, DateTime) TryParse(String, DateTime) TryParse(String, DateTime)

指定した文字列形式の日時を対応する DateTime 表現に変換し、変換に成功したかどうかを示す値を返します。 Converts the specified string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

指定したカルチャ固有の書式情報と書式スタイルを使用して、指定した文字列形式の日付と時刻をそれと等価の DateTime に変換し、変換に成功したかどうかを示す値を返します。 Converts the specified string representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

TryParse(ReadOnlySpan<Char>, DateTime) TryParse(ReadOnlySpan<Char>, DateTime) TryParse(ReadOnlySpan<Char>, DateTime) TryParse(ReadOnlySpan<Char>, DateTime)
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)

指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。 Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. 文字列形式の書式は、指定した書式と完全に一致する必要があります。 The format of the string representation must match the specified format exactly. このメソッドは、変換に成功したかどうかを示す値を返します。 The method returns a value that indicates whether the conversion succeeded.

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)

指定した書式の配列、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。 Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. 文字列形式の書式は、指定した書式の少なくとも 1 つと完全に一致する必要があります。 The format of the string representation must match at least one of the specified formats exactly. このメソッドは、変換に成功したかどうかを示す値を返します。 The method returns a value that indicates whether the conversion succeeded.

Operators

Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan)

指定した日付と時刻に指定した時間間隔を加算して、新しい日付と時刻を作成します。 Adds a specified time interval to a specified date and time, yielding a new date and time.

Equality(DateTime, DateTime) Equality(DateTime, DateTime) Equality(DateTime, DateTime) Equality(DateTime, DateTime)

DateTime の 2 つの指定したインスタンスが等しいかどうかを判断します。 Determines whether two specified instances of DateTime are equal.

GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime)

指定した DateTime が、指定したもう 1 つの DateTime より後の時刻かどうかを判断します。 Determines whether one specified DateTime is later than another specified DateTime.

GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime)

指定した 1 つの DateTime が、指定した別の DateTime と同じ日時またはそれより後の日時を表しているかどうかを判断します。 Determines whether one specified DateTime represents a date and time that is the same as or later than another specified DateTime.

Inequality(DateTime, DateTime) Inequality(DateTime, DateTime) Inequality(DateTime, DateTime) Inequality(DateTime, DateTime)

DateTime の 2 つの指定したインスタンスが等しいかどうかを判断します。 Determines whether two specified instances of DateTime are not equal.

LessThan(DateTime, DateTime) LessThan(DateTime, DateTime) LessThan(DateTime, DateTime) LessThan(DateTime, DateTime)

指定した DateTime が、指定したもう 1 つの DateTime より前の時刻かどうかを判断します。 Determines whether one specified DateTime is earlier than another specified DateTime.

LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime)

指定した 1 つの DateTime が、指定した別の DateTime と同じ日時またはそれより前の日時を表しているかどうかを判断します。 Determines whether one specified DateTime represents a date and time that is the same as or earlier than another specified DateTime.

Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan)

指定した日付と時刻から指定した時間間隔を減算して、新しい日付と時刻を返します。 Subtracts a specified time interval from a specified date and time and returns a new date and time.

Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime)

指定した日付と時刻から指定したもう 1 つの日付と時刻を減算して、時間間隔を返します。 Subtracts a specified date and time from another specified date and time and returns a time interval.

Explicit Interface Implementations

IComparable.CompareTo(Object) IComparable.CompareTo(Object) IComparable.CompareTo(Object) IComparable.CompareTo(Object)
IConvertible.GetTypeCode() IConvertible.GetTypeCode() IConvertible.GetTypeCode() IConvertible.GetTypeCode()
IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider)

現在の DateTime オブジェクトを返します。 Returns the current DateTime object.

IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider)

現在の DateTime オブジェクトを、指定された型のオブジェクトに変換します。 Converts the current DateTime object to an object of a specified type.

IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider)

この変換はサポートされていません。 This conversion is not supported. このメソッドを使用しようとすると、InvalidCastException がスローされます。 Attempting to use this method throws an InvalidCastException.

ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext)

SerializationInfo オブジェクトに、現在の DateTime オブジェクトをシリアル化するために必要なすべてのデータを格納します。 Populates a SerializationInfo object with the data needed to serialize the current DateTime object.

Applies to

Thread Safety

この種類のすべてのメンバーは、スレッド セーフです。 All members of this type are thread safe. インスタンスの状態を変更する表示されるメンバーは、実際に新しい値で初期化された新しいインスタンスを返します。 Members that appear to modify instance state actually return a new instance initialized with the new value. として、他の種類と読み取りと書き込みをこの型のインスタンスを含む共有変数を保護する必要があるスレッド セーフを確保するロックによって。 As with any other type, reading and writing to a shared variable that contains an instance of this type must be protected by a lock to guarantee thread safety.

See Also