DateTimeFormatInfo DateTimeFormatInfo DateTimeFormatInfo DateTimeFormatInfo Class

定義

日付と時刻の値の書式に関するカルチャ固有の情報を提供します。Provides culture-specific information about the format of date and time values.

public ref class DateTimeFormatInfo sealed : ICloneable, IFormatProvider
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class DateTimeFormatInfo : ICloneable, IFormatProvider
type DateTimeFormatInfo = class
    interface ICloneable
    interface IFormatProvider
Public NotInheritable Class DateTimeFormatInfo
Implements ICloneable, IFormatProvider
継承
DateTimeFormatInfoDateTimeFormatInfoDateTimeFormatInfoDateTimeFormatInfo
属性
実装

次の例では、リフレクションを使用して、プロパティを取得、DateTimeFormatInfoの英語 (米国) カルチャ オブジェクト。The following example uses reflection to get the properties of the DateTimeFormatInfo object for the English (United States) culture. カスタム書式指定文字列を含むプロパティの値を表示し、書式設定された日付を表示するこれらの文字列を使用します。It displays the value of those properties that contain custom format strings and uses those strings to display formatted dates.

using System;
using System.Globalization;
using System.Reflection;

public class Example
{
   public static void Main()
   {
      // Get the properties of an en-US DateTimeFormatInfo object.
      DateTimeFormatInfo dtfi = CultureInfo.GetCultureInfo("en-US").DateTimeFormat;
      Type typ = dtfi.GetType();
      PropertyInfo[] props = typ.GetProperties();
      DateTime value = new DateTime(2012, 5, 28, 11, 35, 0); 
      
      foreach (var prop in props) {
         // Is this a format pattern-related property?
         if (prop.Name.Contains("Pattern")) {
            string fmt = prop.GetValue(dtfi, null).ToString();
            Console.WriteLine("{0,-33} {1} \n{2,-37}Example: {3}\n", 
                              prop.Name + ":", fmt, "",
                              value.ToString(fmt)); 
         }
      }
   }
}
// The example displays the following output:
//    FullDateTimePattern:              dddd, MMMM dd, yyyy h:mm:ss tt
//                                         Example: Monday, May 28, 2012 11:35:00 AM
//    
//    LongDatePattern:                  dddd, MMMM dd, yyyy
//                                         Example: Monday, May 28, 2012
//    
//    LongTimePattern:                  h:mm:ss tt
//                                         Example: 11:35:00 AM
//    
//    MonthDayPattern:                  MMMM dd
//                                         Example: May 28
//    
//    RFC1123Pattern:                   ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
//                                         Example: Mon, 28 May 2012 11:35:00 GMT
//    
//    ShortDatePattern:                 M/d/yyyy
//                                         Example: 5/28/2012
//    
//    ShortTimePattern:                 h:mm tt
//                                         Example: 11:35 AM
//    
//    SortableDateTimePattern:          yyyy'-'MM'-'dd'T'HH':'mm':'ss
//                                         Example: 2012-05-28T11:35:00
//    
//    UniversalSortableDateTimePattern: yyyy'-'MM'-'dd HH':'mm':'ss'Z'
//                                         Example: 2012-05-28 11:35:00Z
//    
//    YearMonthPattern:                 MMMM, yyyy
//                                         Example: May, 2012
Imports System.Globalization
Imports System.Reflection

Module Example
   Public Sub Main()
      ' Get the properties of an en-US DateTimeFormatInfo object.
      Dim dtfi As DateTimeFormatInfo = CultureInfo.GetCultureInfo("en-US").DateTimeFormat
      Dim typ As Type = dtfi.GetType()
      Dim props() As PropertyInfo = typ.GetProperties()
      Dim value As Date = #05/28/2012 11:35AM# 
      
      For Each prop In props
         ' Is this a format pattern-related property?
         If prop.Name.Contains("Pattern") Then
            Dim fmt As String = CStr(prop.GetValue(dtfi, Nothing))
            Console.WriteLine("{0,-33} {1} {2}{3,-37}Example: {4}", 
                              prop.Name + ":", fmt, vbCrLf, "",
                              value.ToString(fmt)) 
            Console.WriteLine()
         End If
      Next
   End Sub
End Module
' The example displays the following output:
'    FullDateTimePattern:              dddd, MMMM dd, yyyy h:mm:ss tt
'                                         Example: Monday, May 28, 2012 11:35:00 AM
'    
'    LongDatePattern:                  dddd, MMMM dd, yyyy
'                                         Example: Monday, May 28, 2012
'    
'    LongTimePattern:                  h:mm:ss tt
'                                         Example: 11:35:00 AM
'    
'    MonthDayPattern:                  MMMM dd
'                                         Example: May 28
'    
'    RFC1123Pattern:                   ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
'                                         Example: Mon, 28 May 2012 11:35:00 GMT
'    
'    ShortDatePattern:                 M/d/yyyy
'                                         Example: 5/28/2012
'    
'    ShortTimePattern:                 h:mm tt
'                                         Example: 11:35 AM
'    
'    SortableDateTimePattern:          yyyy'-'MM'-'dd'T'HH':'mm':'ss
'                                         Example: 2012-05-28T11:35:00
'    
'    UniversalSortableDateTimePattern: yyyy'-'MM'-'dd HH':'mm':'ss'Z'
'                                         Example: 2012-05-28 11:35:00Z
'    
'    YearMonthPattern:                 MMMM, yyyy
'                                         Example: May, 2012

注釈

プロパティ、DateTimeFormatInfoクラスには、書式設定または、次のように日付と時刻の値を解析するカルチャ固有情報が含まれています。The properties of the DateTimeFormatInfo class contain culture-specific information for formatting or parsing date and time values such as the following:

  • 日付値の書式設定するために使用するパターン。The patterns used to format date values.

  • 時刻の値を書式設定に使用するパターン。The patterns used to format time values.

  • 週の曜日の名前。The names of the days of the week.

  • 年の月の名前。The names of the months of the year.

  • 午前The A.M. および p. m.and P.M. 時刻の値で使用されている指定子。designators used in time values.

  • カレンダーの日付を表すです。The calendar in which dates are expressed.

このセクションの内容:In this section:

DateTimeFormatInfo オブジェクトをインスタンス化します。Instantiating a DateTimeFormatInfo object

ADateTimeFormatInfoオブジェクトは、インバリアント カルチャや、特定のカルチャ、ニュートラル カルチャでは、現在のカルチャの書式指定規則を表すことができます。A DateTimeFormatInfo object can represent the formatting conventions of the invariant culture, a specific culture, a neutral culture, or the current culture. このセクションの各型のインスタンスを作成する方法を説明しますDateTimeFormatInfoオブジェクト。This section discusses how to instantiate each type of DateTimeFormatInfo object.

インバリアント カルチャの DateTimeFormatInfo オブジェクトをインスタンス化します。Instantiating a DateTimeFormatInfo object for the invariant culture

インバリアント カルチャでは、カルチャに依存しないられるカルチャを表します。The invariant culture represents a culture that is culture-insensitive. すべて特定英語圏の国/地域ではなく、英語の言語に基づいています。It is based on the English language, but not on any specific English-speaking country/region. 特定のカルチャのデータは、動的であっても、新しいカルチャの規則やユーザー設定を反映するように変更することができます、インバリアント カルチャのデータは変わりません。Although the data of specific cultures can be dynamic and can change to reflect new cultural conventions or user preferences, the data of the invariant culture does not change. インスタンス化することができます、DateTimeFormatInfo次の方法でインバリアント カルチャの書式指定規則を表すオブジェクト。You can instantiate a DateTimeFormatInfo object that represents the formatting conventions of the invariant culture in the following ways:

次の例がこれらの各メソッドをインスタンス化するには、DateTimeFormatInfoインバリアント カルチャを表すオブジェクト。The following example uses each of these methods to instantiate a DateTimeFormatInfo object that represents the invariant culture. オブジェクトは読み取り専用かどうかを示します。It then indicates whether the object is read-only.

System.Globalization.DateTimeFormatInfo dtfi; 

dtfi = System.Globalization.DateTimeFormatInfo.InvariantInfo;
Console.WriteLine(dtfi.IsReadOnly);               

dtfi = new System.Globalization.DateTimeFormatInfo();
Console.WriteLine(dtfi.IsReadOnly);               

dtfi = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat;
Console.WriteLine(dtfi.IsReadOnly);                
// The example displays the following output:
//       True
//       False
//       True      
Dim dtfi As System.Globalization.DateTimeFormatInfo

dtfi = System.Globalization.DateTimeFormatInfo.InvariantInfo
Console.WriteLine(dtfi.IsReadOnly)               

dtfi = New System.Globalization.DateTimeFormatInfo()
Console.WriteLine(dtfi.IsReadOnly)               

dtfi = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat
Console.WriteLine(dtfi.IsReadOnly) 
' The example displays the following output:
'       True
'       False
'       True      

特定のカルチャの DateTimeFormatInfo オブジェクトをインスタンス化します。Instantiating a DateTimeFormatInfo object for a specific culture

特定のカルチャでは、特定の国/地域で話されている言語を表します。A specific culture represents a language that is spoken in a particular country/region. たとえば、EN-US では、米国で話される英語の言語を表す特定のカルチャと EN-CA はカナダで話される英語の言語を表す特定のカルチャ。For example, en-US is a specific culture that represents the English language spoken in the United States, and en-CA is a specific culture that represents the English language spoken in Canada. インスタンス化することができます、DateTimeFormatInfo次の方法で、特定のカルチャの書式指定規則を表すオブジェクト。You can instantiate a DateTimeFormatInfo object that represents the formatting conventions of a specific culture in the following ways:

次の例では、各インスタンス化するこれらの方法を示す、DateTimeFormatInfoオブジェクトし、結果のオブジェクトは読み取り専用かどうかを示します。The following example illustrates each of these ways to instantiate a DateTimeFormatInfo object and indicates whether the resulting object is read-only.

System.Globalization.CultureInfo ci = null;
System.Globalization.DateTimeFormatInfo dtfi = null;

// Instantiate a culture using CreateSpecificCulture.
ci = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
dtfi = ci.DateTimeFormat;
Console.WriteLine("{0} from CreateSpecificCulture: {1}", ci.Name, dtfi.IsReadOnly);

// Instantiate a culture using the CultureInfo constructor.
ci = new System.Globalization.CultureInfo("en-CA"); 
dtfi = ci.DateTimeFormat;
Console.WriteLine("{0} from CultureInfo constructor: {1}", ci.Name, dtfi.IsReadOnly);

// Retrieve a culture by calling the GetCultureInfo method.
ci = System.Globalization.CultureInfo.GetCultureInfo("en-AU");
dtfi = ci.DateTimeFormat;
Console.WriteLine("{0} from GetCultureInfo: {1}", ci.Name, dtfi.IsReadOnly);

// Instantiate a DateTimeFormatInfo object by calling DateTimeFormatInfo.GetInstance.  
ci = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB");
dtfi = System.Globalization.DateTimeFormatInfo.GetInstance(ci);
Console.WriteLine("{0} from GetInstance: {1}", ci.Name, dtfi.IsReadOnly);

// The example displays the following output:
//      en-US from CreateSpecificCulture: False
//      en-CA from CultureInfo constructor: False
//      en-AU from GetCultureInfo: True
//      en-GB from GetInstance: False
Dim ci As System.Globalization.CultureInfo = Nothing
Dim dtfi As System.Globalization.DateTimeFormatInfo = Nothing

' Instantiate a culture using CreateSpecificCulture.
ci = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
dtfi = ci.DateTimeFormat
Console.WriteLine("{0} from CreateSpecificCulture: {1}", ci.Name, dtfi.IsReadOnly)

' Instantiate a culture using the CultureInfo constructor.
ci = new System.Globalization.CultureInfo("en-CA") 
dtfi = ci.DateTimeFormat
Console.WriteLine("{0} from CultureInfo constructor: {1}", ci.Name, dtfi.IsReadOnly)

' Retrieve a culture by calling the GetCultureInfo method.
ci = System.Globalization.CultureInfo.GetCultureInfo("en-AU")
dtfi = ci.DateTimeFormat
Console.WriteLine("{0} from GetCultureInfo: {1}", ci.Name, dtfi.IsReadOnly)


' Instantiate a DateTimeFormatInfo object by calling DateTimeFormatInfo.GetInstance.  
ci = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB")
dtfi = System.Globalization.DateTimeFormatInfo.GetInstance(ci)
Console.WriteLine("{0} from GetInstance: {1}", ci.Name, dtfi.IsReadOnly)

' The example displays the following output:
'      en-US from CreateSpecificCulture: False
'      en-CA from CultureInfo constructor: False
'      en-AU from GetCultureInfo: True
'      en-GB from GetInstance: False

ニュートラル カルチャの DateTimeFormatInfo オブジェクトをインスタンス化します。Instantiating a DateTimeFormatInfo object for a neutral culture

ニュートラル カルチャを表すカルチャまたは言語、国/地域の独立したです。通常は 1 つまたは複数の特定のカルチャの親です。A neutral culture represents a culture or language that is independent of a country/region; it is typically the parent of one or more specific cultures. たとえば、Fr は、フランス語の言語と、FR-FR カルチャの親のニュートラル カルチャです。For example, Fr is a neutral culture for the French language and the parent of the fr-FR culture. インスタンス化することができます、DateTimeFormatInfoを作成するのと同じ方法でニュートラル カルチャの書式指定規則を表すオブジェクトをDateTimeFormatInfo特定のカルチャの書式指定規則を表すオブジェクト。You can instantiate a DateTimeFormatInfo object that represents the formatting conventions of a neutral culture in the same ways that you create a DateTimeFormatInfo object that represents the formatting conventions of a specific culture. さらに、ニュートラル カルチャを取得できますDateTimeFormatInfoオブジェクトから特定のカルチャのニュートラル カルチャを取得することによってCultureInfo.Parentプロパティと取得、DateTimeFormatInfoによって返されるオブジェクトのCultureInfo.DateTimeFormatプロパティ。In addition, you can retrieve a neutral culture's DateTimeFormatInfo object by retrieving a neutral culture from a specific culture's CultureInfo.Parent property and retrieving the DateTimeFormatInfo object returned by its CultureInfo.DateTimeFormat property. 親カルチャは、返されるインバリアント カルチャを表す場合を除き、DateTimeFormatInfoオブジェクトが読み取り/書き込みです。Unless the parent culture represents the invariant culture, the returned DateTimeFormatInfo object is read/write. 次の例では、インスタンス化するこれらの方法を示しています、DateTimeFormatInfoニュートラル カルチャを表すオブジェクト。The following example illustrates these ways of instantiating a DateTimeFormatInfo object that represents a neutral culture.

System.Globalization.CultureInfo specific, neutral;
System.Globalization.DateTimeFormatInfo dtfi;

// Instantiate a culture by creating a specific culture and using its Parent property.
specific = System.Globalization.CultureInfo.GetCultureInfo("fr-FR");
neutral = specific.Parent;
dtfi = neutral.DateTimeFormat;
Console.WriteLine("{0} from Parent property: {1}", neutral.Name, dtfi.IsReadOnly);

dtfi = System.Globalization.CultureInfo.GetCultureInfo("fr-FR").Parent.DateTimeFormat;
Console.WriteLine("{0} from Parent property: {1}", neutral.Name, dtfi.IsReadOnly);

// Instantiate a neutral culture using the CultureInfo constructor.
neutral = new System.Globalization.CultureInfo("fr");
dtfi = neutral.DateTimeFormat;
Console.WriteLine("{0} from CultureInfo constructor: {1}", neutral.Name, dtfi.IsReadOnly);

// Instantiate a culture using CreateSpecificCulture. 
neutral = System.Globalization.CultureInfo.CreateSpecificCulture("fr");
dtfi = neutral.DateTimeFormat;
Console.WriteLine("{0} from CreateSpecificCulture: {1}", neutral.Name, dtfi.IsReadOnly);

// Retrieve a culture by calling the GetCultureInfo method.
neutral = System.Globalization.CultureInfo.GetCultureInfo("fr");
dtfi = neutral.DateTimeFormat;
Console.WriteLine("{0} from GetCultureInfo: {1}", neutral.Name, dtfi.IsReadOnly);

// Instantiate a DateTimeFormatInfo object by calling GetInstance.  
neutral = System.Globalization.CultureInfo.CreateSpecificCulture("fr");
dtfi = System.Globalization.DateTimeFormatInfo.GetInstance(neutral);
Console.WriteLine("{0} from GetInstance: {1}", neutral.Name, dtfi.IsReadOnly);

// The example displays the following output:
//       fr from Parent property: False
//       fr from Parent property: False
//       fr from CultureInfo constructor: False
//       fr-FR from CreateSpecificCulture: False
//       fr from GetCultureInfo: True
//       fr-FR from GetInstance: False      
Dim specific, neutral As System.Globalization.CultureInfo
Dim dtfi As System.Globalization.DateTimeFormatInfo

' Instantiate a culture by creating a specific culture and using its Parent property.
specific = System.Globalization.CultureInfo.GetCultureInfo("fr-FR")
neutral = specific.Parent
dtfi = neutral.DateTimeFormat
Console.WriteLine("{0} from Parent property: {1}", neutral.Name, dtfi.IsReadOnly)

dtfi = System.Globalization.CultureInfo.GetCultureInfo("fr-FR").Parent.DateTimeFormat
Console.WriteLine("{0} from Parent property: {1}", neutral.Name, dtfi.IsReadOnly)

' Instantiate a neutral culture using the CultureInfo constructor.
neutral = New System.Globalization.CultureInfo("fr")
dtfi = neutral.DateTimeFormat
Console.WriteLine("{0} from CultureInfo constructor: {1}", neutral.Name, dtfi.IsReadOnly)

' Instantiate a culture using CreateSpecificCulture. 
neutral = System.Globalization.CultureInfo.CreateSpecificCulture("fr")
dtfi = neutral.DateTimeFormat
Console.WriteLine("{0} from CreateSpecificCulture: {1}", neutral.Name, dtfi.IsReadOnly)

' Retrieve a culture by calling the GetCultureInfo method.
neutral = System.Globalization.CultureInfo.GetCultureInfo("fr")
dtfi = neutral.DateTimeFormat
Console.WriteLine("{0} from GetCultureInfo: {1}", neutral.Name, dtfi.IsReadOnly)

' Instantiate a DateTimeFormatInfo object by calling GetInstance.  
neutral = System.Globalization.CultureInfo.CreateSpecificCulture("fr")
dtfi = System.Globalization.DateTimeFormatInfo.GetInstance(neutral)
Console.WriteLine("{0} from GetInstance: {1}", neutral.Name, dtfi.IsReadOnly)

' The example displays the following output:
'       fr from Parent property: False
'       fr from Parent property: False
'       fr from CultureInfo constructor: False
'       fr-FR from CreateSpecificCulture: False
'       fr from GetCultureInfo: True
'       fr-FR from GetInstance: False       

注意

.NET Framework バージョン 1.0 で.NET Framework 3.5.NET Framework 3.5を取得しようとしてをDateTimeFormatInfoニュートラル カルチャの書式指定規則を反映するオブジェクトを返します。 をNotSupportedException例外。In the .NET Framework versions 1.0 through .NET Framework 3.5.NET Framework 3.5, trying to retrieve a DateTimeFormatInfo object that reflects the formatting conventions of a neutral culture throws a NotSupportedException exception.

ただし、特定の国/地域から独立しているために、ニュートラル カルチャは、カルチャに固有の書式情報がありません。However, a neutral culture lacks culture-specific formatting information, because it is independent of a specific country/region. 設定ではなく、DateTimeFormatInfoジェネリックの値を持つオブジェクトに、.NET Framework が返す、DateTimeFormatInfoニュートラル カルチャの子である、特定の書式指定規則のカルチャを反映するオブジェクト。Instead of populating the DateTimeFormatInfo object with generic values, the .NET Framework returns a DateTimeFormatInfo object that reflects the formatting conventions of a specific culture that is a child of the neutral culture. たとえば、 DateTimeFormatInfo en のニュートラル カルチャは EN-US カルチャの書式指定規則を反映するためのオブジェクトとDateTimeFormatInfofr カルチャ、FR-FR カルチャの書式設定規則を反映するためのオブジェクトします。For example, the DateTimeFormatInfo object for the neutral en culture reflects the formatting conventions of the en-US culture, and the DateTimeFormatInfo object for the fr culture reflects the formatting conventions of the fr-FR culture.

次のようなコードを使用すると、ニュートラル カルチャを表すどの特定のカルチャの書式指定規則を決定します。You can use code like the following to determine which specific culture's formatting conventions a neutral culture represents. この例では、リフレクションを使用して、比較、DateTimeFormatInfoニュートラル カルチャのプロパティの特定の子のカルチャのプロパティで。The example uses reflection to compare the DateTimeFormatInfo properties of a neutral culture with the properties of a specific child culture. カレンダーの種類が同じ場合に等価である 2 つのカレンダーを考慮し、構成のグレゴリオ暦カレンダー場合は、そのGregorianCalendar.CalendarTypeプロパティが同一の値があります。It considers two calendars to be equivalent if they are the same calendar type and, for Gregorian calendars, if their GregorianCalendar.CalendarType properties have identical values.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Reflection;

public class Example
{
   public static void Main()
   {
      // Get all the neutral cultures
      List<String> names = new List<String>();
      Array.ForEach(CultureInfo.GetCultures(CultureTypes.NeutralCultures),
                    culture => names.Add(culture.Name));
      names.Sort();
      foreach (var name in names) {
         // Ignore the invariant culture.
         if (name == "") continue;
         
         ListSimilarChildCultures(name);        
      }
   }

   private static void ListSimilarChildCultures(String name)
   {
      // Create the neutral DateTimeFormatInfo object.
      DateTimeFormatInfo dtfi = CultureInfo.GetCultureInfo(name).DateTimeFormat;
      // Retrieve all specific cultures of the neutral culture.
      CultureInfo[] cultures = Array.FindAll(CultureInfo.GetCultures(CultureTypes.SpecificCultures), 
                               culture => culture.Name.StartsWith(name + "-", StringComparison.OrdinalIgnoreCase));
      // Create an array of DateTimeFormatInfo properties
      PropertyInfo[] properties = typeof(DateTimeFormatInfo).GetProperties(BindingFlags.Instance | BindingFlags.Public);
      bool hasOneMatch = false;

      foreach (var ci in cultures) {
         bool match = true;     
         // Get the DateTimeFormatInfo for a specific culture.
         DateTimeFormatInfo specificDtfi = ci.DateTimeFormat;
         // Compare the property values of the two.
         foreach (var prop in properties) {
            // We're not interested in the value of IsReadOnly.     
            if (prop.Name == "IsReadOnly") continue;
            
            // For arrays, iterate the individual elements to see if they are the same.
            if (prop.PropertyType.IsArray) { 
               IList nList = (IList) prop.GetValue(dtfi, null);
               IList sList = (IList) prop.GetValue(specificDtfi, null);
               if (nList.Count != sList.Count) {
                  match = false;
Console.WriteLine("   Different n in {2} array for {0} and {1}", name, ci.Name, prop.Name);
                  break;
               } 

               for (int ctr = 0; ctr < nList.Count; ctr++) {
                  if (! nList[ctr].Equals(sList[ctr])) { 
                     match = false;
Console.WriteLine("   {0} value different for {1} and {2}", prop.Name, name, ci.Name);                     
                     break;
                  }     
               }
               
               if (! match) break;
            }
            // Get non-array values.
            else {
               Object specificValue = prop.GetValue(specificDtfi);
               Object neutralValue = prop.GetValue(dtfi);
                               
               // Handle comparison of Calendar objects.
               if (prop.Name == "Calendar") { 
                  // The cultures have a different calendar type.
                  if (specificValue.ToString() != neutralValue.ToString()) {
Console.WriteLine("   Different calendar types for {0} and {1}", name, ci.Name);
                     match = false;
                     break;
                  }
                   
                  if (specificValue is GregorianCalendar) {
                     if (((GregorianCalendar) specificValue).CalendarType != ((GregorianCalendar) neutralValue).CalendarType) {
Console.WriteLine("   Different Gregorian calendar types for {0} and {1}", name, ci.Name);
                        match = false;
                        break;
                     }
                  }
               }
               else if (! specificValue.Equals(neutralValue)) {
                  match = false;
Console.WriteLine("   Different {0} values for {1} and {2}", prop.Name, name, ci.Name);                  
                  break;   
               }
            }        
         }
         if (match) {
            Console.WriteLine("DateTimeFormatInfo object for '{0}' matches '{1}'", 
                              name, ci.Name);
            hasOneMatch = true;
         }                                       
      }
      if (! hasOneMatch)
         Console.WriteLine("DateTimeFormatInfo object for '{0}' --> No Match", name);            

      Console.WriteLine();
   }
}
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Reflection

Module Example
   Public Sub Main()
      ' Get all the neutral cultures
      Dim names As New List(Of String)
      Array.ForEach(CultureInfo.GetCultures(CultureTypes.NeutralCultures),
                    Sub(culture) names.Add(culture.Name))
      names.Sort()
      For Each name In names
         ' Ignore the invariant culture.
         If name = "" Then Continue For
         
         ListSimilarChildCultures(name)        
      Next
   End Sub

   Private Sub ListSimilarChildCultures(name As String)
      ' Create the neutral DateTimeFormatInfo object.
      Dim dtfi As DateTimeFormatInfo = CultureInfo.GetCultureInfo(name).DateTimeFormat
      ' Retrieve all specific cultures of the neutral culture.
      Dim cultures() As CultureInfo = Array.FindAll(CultureInfo.GetCultures(CultureTypes.SpecificCultures), 
                               Function(culture) culture.Name.StartsWith(name + "-", StringComparison.OrdinalIgnoreCase))
      ' Create an array of DateTimeFormatInfo properties
      Dim properties() As PropertyInfo = GetType(DateTimeFormatInfo).GetProperties(BindingFlags.Instance Or BindingFlags.Public)
      Dim hasOneMatch As Boolean = False

      For Each ci In cultures
         Dim match As Boolean = True     
         ' Get the DateTimeFormatInfo for a specific culture.
         Dim specificDtfi As DateTimeFormatInfo = ci.DateTimeFormat
         ' Compare the property values of the two.
         For Each prop In properties
            ' We're not interested in the value of IsReadOnly.     
            If prop.Name = "IsReadOnly" Then Continue For
            
            ' For arrays, iterate the individual elements to see if they are the same.
            If prop.PropertyType.IsArray Then 
               Dim nList As IList = CType(prop.GetValue(dtfi, Nothing), IList)
               Dim sList As IList = CType(prop.GetValue(specificDtfi, Nothing), IList)
               If nList.Count <> sList.Count Then
                  match = false
Console.WriteLine("   Different n in {2} array for {0} and {1}", name, ci.Name, prop.Name)
                  Exit For
               End If 

               For ctr As Integer = 0 To nList.Count - 1
                  If Not nList(ctr).Equals(sList(ctr)) 
                     match = false
Console.WriteLine("   {0} value different for {1} and {2}", prop.Name, name, ci.Name)                     
                     Exit For
                  End If     
               Next
               
               If Not match Then Exit For
            ' Get non-array values.
            Else
               Dim specificValue As Object = prop.GetValue(specificDtfi)
               Dim neutralValue As Object = prop.GetValue(dtfi)
                               
               ' Handle comparison of Calendar objects.
               If prop.Name = "Calendar" Then 
                  ' The cultures have a different calendar type.
                  If specificValue.ToString() <> neutralValue.ToString() Then
Console.WriteLine("   Different calendar types for {0} and {1}", name, ci.Name)
                     match = False
                     Exit For
                  End If
                   
                  If TypeOf specificValue Is GregorianCalendar Then
                     If CType(specificValue, GregorianCalendar).CalendarType <> CType(neutralValue, GregorianCalendar).CalendarType Then
Console.WriteLine("   Different Gregorian calendar types for {0} and {1}", name, ci.Name)
                        match = False
                        Exit For
                     End If
                  End If
               Else If Not specificValue.Equals(neutralValue) Then
                  match = false
Console.WriteLine("   Different {0} values for {1} and {2}", prop.Name, name, ci.Name)                  
                  Exit For   
               End If
            End If        
         Next
         If match Then
            Console.WriteLine("DateTimeFormatInfo object for '{0}' matches '{1}'", 
                                      name, ci.Name)
            hasOneMatch = True
         End If                                       
      Next
      If Not hasOneMatch Then
         Console.WriteLine("DateTimeFormatInfo object for '{0}' --> No Match", name)            
      End If
      
      Console.WriteLine()
   End Sub
End Module

現在のカルチャの DateTimeFormatInfo オブジェクトをインスタンス化します。Instantiating a DateTimeFormatInfo object for the current culture

インスタンス化することができます、DateTimeFormatInfo次の方法で、現在のカルチャの書式指定規則を表すオブジェクト。You can instantiate a DateTimeFormatInfo object that represents the formatting conventions of the current culture in the following ways:

次の例がこれらの各メソッドをインスタンス化するには、DateTimeFormatInfo現在のカルチャの書式指定規則を表すオブジェクト。The following example uses each of these methods to instantiate a DateTimeFormatInfo object that represents the formatting conventions of the current culture. オブジェクトは読み取り専用かどうかを示します。It then indicates whether the object is read-only.

DateTimeFormatInfo dtfi;

dtfi = DateTimeFormatInfo.CurrentInfo;
Console.WriteLine(dtfi.IsReadOnly);

dtfi = CultureInfo.CurrentCulture.DateTimeFormat;
Console.WriteLine(dtfi.IsReadOnly);

dtfi = DateTimeFormatInfo.GetInstance(CultureInfo.CurrentCulture);
Console.WriteLine(dtfi.IsReadOnly);
// The example displays the following output:
//     True
//     True
//     True
Dim dtfi As DateTimeFormatInfo

dtfi = DateTimeFormatInfo.CurrentInfo
Console.WriteLine(dtfi.IsReadOnly)

dtfi = CultureInfo.CurrentCulture.DateTimeFormat
Console.WriteLine(dtfi.IsReadOnly)

dtfi = DateTimeFormatInfo.GetInstance(CultureInfo.CurrentCulture)
Console.WriteLine(dtfi.IsReadOnly)
' The example displays the following output:
'     True
'     True
'     True

書き込み可能なを作成するDateTimeFormatInfo以下の方法のいずれかで現在のスレッド カルチャの規則を表すオブジェクト。You can create a writable DateTimeFormatInfo object that represents the conventions of the current thread culture in one of these ways:

次の例は、読み取り/書き込みをインスタンス化するには、各方法を示しています。DateTimeFormatInfoオブジェクトとの値を表示します。 そのIsReadOnlyプロパティ。The following example illustrates each way of instantiating a read/write DateTimeFormatInfo object and displays the value of its IsReadOnly property.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTimeFormatInfo current1 = DateTimeFormatInfo.CurrentInfo;
      current1 = (DateTimeFormatInfo) current1.Clone();
      Console.WriteLine(current1.IsReadOnly);

      CultureInfo culture2 = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name);
      DateTimeFormatInfo current2 = culture2.DateTimeFormat;
      Console.WriteLine(current2.IsReadOnly);
   }
}
// The example displays the following output:
//       False
//       False
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim current1 As DateTimeFormatInfo = DateTimeFormatInfo.CurrentInfo
      current1 = CType(current1.Clone(), DateTimeFormatInfo)
      Console.WriteLine(current1.IsReadOnly)

      Dim culture2 As CultureInfo = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name)
      Dim current2 As DateTimeFormatInfo = culture2.DateTimeFormat
      Console.WriteLine(current2.IsReadOnly)
   End Sub
End Module
' The example displays the following output:
'       False
'       False

Windows ユーザーをオーバーライドできますの一部、DateTimeFormatInfoプロパティ値の書式設定と解析を介した操作で使用される、地域と言語コントロール パネルの アプリケーション。In Windows, the user can override some of the DateTimeFormatInfo property values used in formatting and parsing operations through the Region and Language application in Control Panel. たとえば、カルチャが英語 (米国) は、ユーザーは、(形式 h:mm:ss tt) で既定の 12 時間制ではなく時刻の値 (HH:mm:ss 形式) で 24 時間制を使用して時間を表示することもできます。For example, a user whose culture is English (United States) might choose to display long time values using a 24-hour clock (in the format HH:mm:ss) instead of the default 12-hour clock (in the format h:mm:ss tt). DateTimeFormatInfo説明した方法で取得したオブジェクト以前すべて反映これらのユーザー上書きします。The DateTimeFormatInfo objects retrieved in the ways discussed previously all reflect these user overrides. これが望ましくない場合は作成できます、NumberFormatInfoユーザーを反映していないオブジェクトよりも優先されます (およびは読み取り専用ではなく読み取り/書き込みでも) 呼び出すことによって、CultureInfo.CultureInfo(String, Boolean)コンス トラクターとの値を提供するfalseuseUserOverride引数。If this is undesirable, you can create a NumberFormatInfo object that does not reflect user overrides (and is also read/write instead of read-only) by calling the CultureInfo.CultureInfo(String, Boolean) constructor and supplying a value of false for the useUserOverride argument. 次の例を示していますこのシステムの現在のカルチャが英語 (米国) と長い時刻パターンを持つが HH:mm:ss に h:mm:ss tt の既定値から変更されました。The following example illustrates this for a system whose current culture is English (United States) and whose long time pattern has been changed from the default of h:mm:ss tt to HH:mm:ss.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo culture;
      DateTimeFormatInfo dtfi;
      
      culture = CultureInfo.CurrentCulture;
      dtfi = culture.DateTimeFormat;
      Console.WriteLine("Culture Name:      {0}", culture.Name);
      Console.WriteLine("User Overrides:    {0}", culture.UseUserOverride);
      Console.WriteLine("Long Time Pattern: {0}\n", culture.DateTimeFormat.LongTimePattern);
            
      culture = new CultureInfo(CultureInfo.CurrentCulture.Name, false);
      Console.WriteLine("Culture Name:      {0}",   culture.Name);
      Console.WriteLine("User Overrides:    {0}",   culture.UseUserOverride);
      Console.WriteLine("Long Time Pattern: {0}\n", culture.DateTimeFormat.LongTimePattern);
   }
}
// The example displays the following output:
//       Culture Name:      en-US
//       User Overrides:    True
//       Long Time Pattern: HH:mm:ss
//       
//       Culture Name:      en-US
//       User Overrides:    False
//       Long Time Pattern: h:mm:ss tt
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim culture As CultureInfo
      Dim dtfi As DateTimeFormatInfo
      
      culture = CultureInfo.CurrentCulture
      dtfi = culture.DateTimeFormat
      Console.WriteLine("Culture Name:      {0}", culture.Name)
      Console.WriteLine("User Overrides:    {0}", culture.UseUserOverride)
      Console.WriteLine("Long Time Pattern: {0}", culture.DateTimeFormat.LongTimePattern)
      Console.WriteLine()
            
      culture = New CultureInfo(CultureInfo.CurrentCulture.Name, False)
      Console.WriteLine("Culture Name:      {0}", culture.Name)
      Console.WriteLine("User Overrides:    {0}", culture.UseUserOverride)
      Console.WriteLine("Long Time Pattern: {0}", culture.DateTimeFormat.LongTimePattern)
   End Sub
End Module
' The example displays the following output:
'       Culture Name:      en-US
'       User Overrides:    True
'       Long Time Pattern: HH:mm:ss
'       
'       Culture Name:      en-US
'       User Overrides:    False
'       Long Time Pattern: h:mm:ss tt

DateTimeFormatInfo と動的データDateTimeFormatInfo and dynamic data

カルチャに固有のデータによって提供される日付と時刻の値の書式設定をDateTimeFormatInfoクラスは動的で提供されるデータはカルチャと同じように、CultureInfoクラス。The culture-specific data for formatting date and time values provided by the DateTimeFormatInfo class is dynamic, just like cultural data provided by the CultureInfo class. 値の安定性に関する想定をする必要がありますいないDateTimeFormatInfoオブジェクトが関連付けられている特定CultureInfoオブジェクト。You should not make any assumptions about the stability of values for DateTimeFormatInfo objects that are associated with particular CultureInfo objects. インバリアント カルチャとそれに関連付けられたによって提供されるデータのみDateTimeFormatInfoオブジェクトは安定しています。Only the data provided by the invariant culture and its associated DateTimeFormatInfo object is stable. アプリケーション セッション間で、またはアプリケーションの実行中にも、その他のデータを変更できます。Other data can change between application sessions or even while your application is running. 変更の 4 つの主要なソースがあります。There are four major sources of change:

  • システムの更新プログラム。System updates. 時間の経過と共に優先のカレンダーまたはよく使用される日付と時刻の形式などのカルチャの設定を変更します。Cultural preferences such as the preferred calendar or customary date and time formats change over time. Windows 更新プログラムにはへの変更が含まれています、これが発生したとき、DateTimeFormatInfo特定のカルチャのプロパティの値。When this happens, Windows Update includes changes to the DateTimeFormatInfo property value for a particular culture.

  • 置換カルチャ。Replacement cultures. CultureAndRegionInfoBuilder既存のカルチャのデータを置換するクラスを使用できます。The CultureAndRegionInfoBuilder class can be used to replace the data of an existing culture.

  • プロパティ値に対する変更を連鎖します。Cascading changes to property values. これにより、実行時にさまざまなカルチャ関連のプロパティを変更できますDateTimeFormatInfoデータを変更します。A number of culture-related properties can change at run time, which, in turn, causes DateTimeFormatInfo data to change. たとえば、プログラム、またはユーザーの操作によっては、現在のカルチャを変更できます。For example, the current culture can be changed either programmatically or through user action. このような場合、DateTimeFormatInfoによって返されるオブジェクト、CurrentInfoプロパティは、現在のカルチャに関連付けられているオブジェクトに変更します。When this happens, the DateTimeFormatInfo object returned by the CurrentInfo property changes to an object associated with the current culture. 同様に、カルチャの暦変更できますが、変更が発生するさまざまなDateTimeFormatInfoプロパティの値。Similarly, a culture's calendar can change, which can result in changes to numerous DateTimeFormatInfo property values.

  • ユーザー設定。User preferences. アプリケーションのユーザーの一部のコントロール パネルの 地域と言語のオプションを使って現在のシステム カルチャに関連付けられている値をオーバーライドすることもできます。Users of your application might choose to override some of the values associated with the current system culture through the regional and language options in Control Panel. たとえば、ユーザーは、別の形式で日付を表示することもできます。For example, users might choose to display the date in a different format. 場合、CultureInfo.UseUserOverrideプロパティに設定されてtrueのプロパティ、DateTimeFormatInfoオブジェクトは、ユーザーの設定からも取得されます。If the CultureInfo.UseUserOverride property is set to true, the properties of the DateTimeFormatInfo object is also retrieved from the user settings. ユーザー設定が関連付けられているカルチャと互換性がないかどうか、CultureInfoオブジェクト (選択したカレンダーでないによって示される予定表のいずれかの場合など、OptionalCalendarsプロパティ)、メソッドとプロパティの値の結果定義されていません。If the user settings are incompatible with the culture associated with the CultureInfo object (for example, if the selected calendar is not one of the calendars indicated by the OptionalCalendars property), the results of the methods and the values of the properties are undefined.

すべてのユーザーがオーバーライドできるプロパティの一貫性のないデータの可能性を最小限に抑える、DateTimeFormatInfoオブジェクトは、オブジェクトの作成時に初期化されます。To minimize the possibility of inconsistent data, all user-overridable properties of a DateTimeFormatInfo object are initialized when the object is created. 可能性があるが、不整合のため、オブジェクトの作成も、ユーザー オーバーライドのプロセスがアトミックとオブジェクトの作成中に、関連する値を変更することができます。There is still a possibility of inconsistency, because neither object creation nor the user override process is atomic and the relevant values can change during object creation. ただし、このような状況は非常にまれなはずです。However, this situation should be extremely rare.

ユーザー オーバーライドを反映するかどうかを制御するDateTimeFormatInfoのシステム カルチャと同じカルチャを表すオブジェクト。You can control whether user overrides are reflected in DateTimeFormatInfo objects that represent the same culture as the system culture. 次の表に、方法、DateTimeFormatInfoオブジェクトを取得して、結果のオブジェクトがユーザー オーバーライドを反映するかどうかを示します。The following table lists the ways in which a DateTimeFormatInfo object can be retrieved and indicates whether the resulting object reflects user overrides.

CultureInfo と DateTimeFormatInfo オブジェクトのソースSource of CultureInfo and DateTimeFormatInfo object ユーザー オーバーライドが反映されます。Reflects user overrides
CultureInfo.CurrentCulture.DateTimeFormat プロパティCultureInfo.CurrentCulture.DateTimeFormat property [はい]Yes
DateTimeFormatInfo.CurrentInfo プロパティDateTimeFormatInfo.CurrentInfo property [はい]Yes
CultureInfo.CreateSpecificCulture メソッドCultureInfo.CreateSpecificCulture method [はい]Yes
CultureInfo.GetCultureInfo メソッドCultureInfo.GetCultureInfo method ×No
CultureInfo.CultureInfo(String) コンストラクターCultureInfo.CultureInfo(String) constructor [はい]Yes
CultureInfo.CultureInfo(String, Boolean) コンストラクターCultureInfo.CultureInfo(String, Boolean) constructor 値に依存useUserOverrideパラメーターDepends on value of useUserOverride parameter

使用する場合、ユーザー オーバーライドを尊重する必要がありますそれ以外の場合は特別な理由がある場合を除き、DateTimeFormatInfoを書式設定し、ユーザー入力を解析またはデータを表示するクライアント アプリケーション内のオブジェクト。Unless there is a compelling reason to do otherwise, you should respect user overrides when you use the DateTimeFormatInfo object in client applications to format and parse user input or to display data. サーバー アプリケーションまたは自動アプリケーションは、する必要がありますされません。For server applications or unattended applications, you should not. ただし、使用する場合、DateTimeFormatInfoいずれかのオブジェクトを明示的または暗黙的に文字列の形式で日付と時刻のデータを保持するには、するには使用するか、DateTimeFormatInfoインバリアント カルチャの書式設定規則を反映するオブジェクトを指定する必要があります、カスタムの日付と時刻は、カルチャに関係なく使用する文字列を書式設定します。However, if you are using the DateTimeFormatInfo object either explicitly or implicitly to persist date and time data in string form, you should either use a DateTimeFormatInfo object that reflects the formatting conventions of the invariant culture, or you should specify a custom date and time format string that you use regardless of culture.

日付と時刻の書式設定Formatting dates and times

ADateTimeFormatInfoオブジェクトはすべての日付と時刻の書式設定操作で暗黙的または明示的が使用されます。A DateTimeFormatInfo object is used implicitly or explicitly in all date and time formatting operations. 次のメソッドの呼び出しが含まれます。These include calls to the following methods:

すべての日付と時刻の書式設定の操作を使用して、IFormatProvider実装します。All date and time formatting operations make use of an IFormatProvider implementation. IFormatProviderインターフェイスには、1 つのメソッドが含まれています。IFormatProvider.GetFormat(Type)します。The IFormatProvider interface includes a single method, IFormatProvider.GetFormat(Type). このコールバック メソッドに渡されますが、Type書式設定情報を提供するために必要な型を表すオブジェクト。This callback method is passed a Type object that represents the type needed to provide formatting information. メソッドは、その型のインスタンスを返しますまたはnull型のインスタンスを提供できない場合。The method returns either an instance of that type or null if it cannot provide an instance of the type. .NET Framework には、2 つが含まれますIFormatProvider日付と時刻の書式設定の実装。The .NET Framework includes two IFormatProvider implementations for formatting dates and times:

場合、IFormatProvider実装が指定されていない書式設定メソッドを明示的に、CultureInfoによって返されるオブジェクト、CultureInfo.CurrentCulture現在のスレッド カルチャを表すプロパティを使用します。If an IFormatProvider implementation is not provided to a formatting method explicitly, the CultureInfo object returned by the CultureInfo.CurrentCulture property that represents the current thread culture is used.

次の例の間のリレーションシップを示しています、IFormatProviderインターフェイスとDateTimeFormatInfo書式設定操作でのクラス。The following example illustrates the relationship between the IFormatProvider interface and the DateTimeFormatInfo class in formatting operations. カスタム定義IFormatProvider実装がGetFormatメソッドは、書式設定操作によって要求されたオブジェクトの種類を表示します。It defines a custom IFormatProvider implementation whose GetFormat method displays the type of the object requested by the formatting operation. 要求している場合、DateTimeFormatInfoオブジェクト、メソッドでは、DateTimeFormatInfoの現在のスレッド カルチャ オブジェクト。If it is requesting a DateTimeFormatInfo object, the method provides the DateTimeFormatInfo object for the current thread culture. 例を示しますから出力として、Decimal.ToString(IFormatProvider)メソッド要求をDateTimeFormatInfoオブジェクトを書式設定情報を提供する、String.Format(IFormatProvider, String, Object[])メソッド要求NumberFormatInfoDateTimeFormatInfoオブジェクトだけでなく、 ICustomFormatter実装です。As the output from the example shows, the Decimal.ToString(IFormatProvider) method requests a DateTimeFormatInfo object to provide formatting information, whereas the String.Format(IFormatProvider, String, Object[]) method requests NumberFormatInfo and DateTimeFormatInfo objects as well as an ICustomFormatter implementation.

using System;
using System.Globalization;

public class CurrentCultureFormatProvider : IFormatProvider
{
   public Object GetFormat(Type formatType) 
   {
      Console.WriteLine("Requesting an object of type {0}", 
                        formatType.Name);
      if (formatType == typeof(NumberFormatInfo))
         return NumberFormatInfo.CurrentInfo;
      else if (formatType == typeof(DateTimeFormatInfo))
         return DateTimeFormatInfo.CurrentInfo;
      else
         return null;
   }
}

public class Example
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2013, 5, 28, 12, 30, 0);
      string value = dateValue.ToString("F", new CurrentCultureFormatProvider());
      Console.WriteLine(value);
      Console.WriteLine();
      string composite = String.Format(new CurrentCultureFormatProvider(), 
                                       "Date: {0:d}   Amount: {1:C}   Description: {2}",
                                       dateValue, 1264.03m, "Service Charge");
      Console.WriteLine(composite);
      Console.WriteLine();
   }
}
// The example displays output like the following:
//       Requesting an object of type DateTimeFormatInfo
//       Tuesday, May 28, 2013 1:30:00 PM
//       
//       Requesting an object of type ICustomFormatter
//       Requesting an object of type DateTimeFormatInfo
//       Requesting an object of type NumberFormatInfo
//       Date: 5/28/2013   Amount: $1,264.03   Description: Service Charge
Imports System.Globalization

Public Class CurrentCultureFormatProvider : Implements IFormatProvider
   Public Function GetFormat(formatType As Type) As Object _
                   Implements IFormatProvider.GetFormat
      Console.WriteLine("Requesting an object of type {0}", 
                        formatType.Name)
      If formatType Is GetType(NumberFormatInfo) Then
         Return NumberFormatInfo.CurrentInfo
      Else If formatType Is GetType(DateTimeFormatInfo) Then
         Return DateTimeFormatInfo.CurrentInfo
      Else
         Return Nothing
      End If
   End Function
End Class

Module Example
   Public Sub Main()
      Dim dateValue As New Date(2013, 05, 28, 13, 30, 0)
      Dim value As String = dateValue.ToString("F", New CurrentCultureFormatProvider())
      Console.WriteLine(value)
      Console.WriteLine()
      Dim composite As String = String.Format(New CurrentCultureFormatProvider, 
                                              "Date: {0:d}   Amount: {1:C}   Description: {2}",
                                              dateValue, 1264.03d, "Service Charge")
      Console.WriteLine(composite)
      Console.WriteLine()
   End Sub
End Module
' The example displays output like the following:
'       Requesting an object of type DateTimeFormatInfo
'       Tuesday, May 28, 2013 1:30:00 PM
'       
'       Requesting an object of type ICustomFormatter
'       Requesting an object of type DateTimeFormatInfo
'       Requesting an object of type NumberFormatInfo
'       Date: 5/28/2013   Amount: $1,264.03   Description: Service Charge

書式指定文字列と DateTimeFormatInfo のプロパティFormat strings and DateTimeFormatInfo properties

DateTimeFormatInfoオブジェクトには書式設定の日付と時刻の値を持つ操作で使用されるプロパティの 3 種類が含まれています。The DateTimeFormatInfo object includes three kinds of properties that are used in formatting operations with date and time values:

標準の日付と時刻の書式指定文字列"d"、"D"、"f"および"F"は、特定の対応するエイリアスなど、DateTimeFormatInfoパターンのプロパティの書式を設定します。The standard date and time format strings, such as "d", "D", "f", and "F", are aliases that correspond to particular DateTimeFormatInfo format pattern properties. ほとんどのカスタム日付/時刻の書式指定文字列に関連する結果のストリームに書式設定操作を挿入する文字列または部分文字列。Most of the custom date and time format strings are related to strings or substrings that a formatting operation inserts into the result stream. 次の表は、標準およびカスタムの日付と時刻の書式指定子とそれに関連付けられたDateTimeFormatInfoプロパティ。The following table lists the standard and custom date and time format specifiers and their associated DateTimeFormatInfo properties. これらを使用する方法の詳細については、指定子を書式設定を参照してください。 Standard Date and Time Format StringsCustom Date and Time Format Stringsします。For details about how to use these format specifiers, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. 各標準書式指定文字列に対応しています、DateTimeFormatInfoプロパティの値がカスタムの日時書式指定文字列。Note that each standard format string corresponds to a DateTimeFormatInfo property whose value is a custom date and time format string. このカスタム書式指定文字列の個々 の指定子は、さらに他の対応DateTimeFormatInfoプロパティ。The individual specifiers in this custom format string in turn correspond to other DateTimeFormatInfo properties. テーブルだけを表示、DateTimeFormatInfoプロパティを標準書式指定文字列エイリアス、およびはリスト プロパティではなくこれらの別名のプロパティに割り当てられているカスタム書式指定文字列でアクセスする可能性が。The table lists only the DateTimeFormatInfo properties for which the standard format strings are aliases, and does not list properties that may be accessed by custom format strings assigned to those aliased properties. さらに、テーブルの一覧に対応するカスタム書式指定子のみDateTimeFormatInfoプロパティ。In addition, the table lists only custom format specifiers that correspond to DateTimeFormatInfo properties.

書式指定子Format specifier 関連付けられたプロパティAssociated properties
"d"(短い形式の日付は標準書式指定文字列)。"d" (short date; standard format string) ShortDatePattern、全体的な結果の文字列の形式を定義します。ShortDatePattern, to define the overall format of the result string.
"D"(長い形式の日付は標準書式指定文字列)。"D" (long date; standard format string) LongDatePattern、全体的な結果の文字列の形式を定義します。LongDatePattern, to define the overall format of the result string.
"f"(完全な日付/時間は標準の短い書式指定文字列)"f" (full date / short time; standard format string) LongDatePattern、結果の文字列の日付部分の形式を定義します。LongDatePattern, to define the format of the date component of the result string.

ShortTimePattern、結果文字列の時刻要素の形式を定義します。ShortTimePattern, to define the format of the time component of the result string.
"F"(完全な日付と長い時刻は標準書式指定文字列)"F" (full date / long time; standard format string) LongDatePattern、結果の文字列の日付部分の形式を定義します。LongDatePattern, to define the format of the date component of the result string.

LongTimePattern、結果文字列の時刻要素の形式を定義します。LongTimePattern, to define the format of the time component of the result string.
"g"(一般の日付と短い形式の時刻は標準書式指定文字列)"g" (general date / short time; standard format string) ShortDatePattern、結果の文字列の日付部分の形式を定義します。ShortDatePattern, to define the format of the date component of the result string.

ShortTimePattern、結果文字列の時刻要素の形式を定義します。ShortTimePattern, to define the format of the time component of the result string.
"G"(一般の日付/時間の長い時間は標準書式指定文字列)"G" (general date / long time; standard format string) ShortDatePattern、結果の文字列の日付部分の形式を定義します。ShortDatePattern, to define the format of the date component of the result string.

LongTimePattern、結果文字列の時刻要素の形式を定義します。LongTimePattern, to define the format of the time component of the result string.
"M"、"m"(月/日は標準書式指定文字列)。"M", "m" (month/day; standard format string) MonthDayPattern、全体的な結果の文字列の形式を定義します。MonthDayPattern, to define the overall format of the result string.
"O"、"o"(ラウンド トリップ日付/時刻は標準書式指定文字列)"O", "o" (round-trip date/time; standard format string) なし。None.
"R"、"r"(RFC1123) 標準書式指定文字列"R", "r" (RFC1123; standard format string) RFC1123Pattern、RFC 1123 標準に準拠している結果の文字列を定義します。RFC1123Pattern, to define a result string that conforms to the RFC 1123 standard. プロパティは読み取り専用です。The property is read-only.
"s"(並べ替え可能な日付/時刻は標準書式指定文字列)。"s" (sortable date/time; standard format string) SortableDateTimePattern、ISO 8601 標準に準拠している結果の文字列を定義します。SortableDateTimePattern, to define a result string that conforms to the ISO 8601 standard. プロパティは読み取り専用です。The property is read-only.
"t"(短い形式の時刻は標準書式指定文字列)。"t" (short time; standard format string) ShortTimePattern、全体的な結果の文字列の形式を定義します。ShortTimePattern, to define the overall format of the result string.
"T"(長時間は標準書式指定文字列)。"T" (long time; standard format string) LongTimePattern、全体的な結果の文字列の形式を定義します。LongTimePattern, to define the overall format of the result string.
"u"(ユニバーサル並べ替え可能な日付/時刻は標準書式指定文字列)。"u" (universal sortable date/time; standard format string) UniversalSortableDateTimePattern、協定世界時の ISO 8601 標準に準拠している結果の文字列を定義します。UniversalSortableDateTimePattern, to define a result string that conforms to the ISO 8601 standard for coordinated universal time. プロパティは読み取り専用です。The property is read-only.
"U"(ユニバーサルの完全な日付/時刻は標準書式指定文字列)。"U" (universal full date/time; standard format string) FullDateTimePattern、全体的な結果の文字列の形式を定義します。FullDateTimePattern, to define the overall format of the result string.
"Y"、"y"(年、月は標準書式指定文字列)。"Y", "y" (year month; standard format string) YearMonthPattern、全体的な結果の文字列の形式を定義します。YearMonthPattern, to define the overall format of the result string.
"ddd"(カスタム書式指定子)"ddd" (custom format specifier) AbbreviatedDayNames、週の曜日の省略名を結果の文字列に含める。AbbreviatedDayNames, to include the abbreviated name of the day of the week in the result string.
"g"、"gg"(カスタム書式指定子)"g", "gg" (custom format specifier) 呼び出し、GetEraName結果の文字列に時代 (年号) の名前を挿入します。Calls the GetEraName method to insert the era name in the result string.
"MMM"(カスタム書式指定子)"MMM" (custom format specifier) AbbreviatedMonthNames、結果の文字列に月の省略名を含めます。AbbreviatedMonthNames, to include the abbreviated month name in the result string.
"MMMM"(カスタム書式指定子)"MMMM" (custom format specifier) MonthNames またはMonthGenitiveNames結果の文字列に完全な月名を含めます。MonthNames or MonthGenitiveNames, to include the full month name in the result string.
"t"(カスタム書式指定子)"t" (custom format specifier) AMDesignator またはPMDesignator結果の文字列に AM/PM 指定子の最初の文字を含める。AMDesignator or PMDesignator, to include the first character of the AM/PM designator in the result string.
"tt"(カスタム書式指定子)"tt" (custom format specifier) AMDesignator またはPMDesignator結果の文字列に完全な AM/PM 指定子を含める。AMDesignator or PMDesignator, to include the full AM/PM designator in the result string.
":"(カスタム書式指定子)":" (custom format specifier) TimeSeparator、結果の文字列に時刻の区切り記号を含める。TimeSeparator, to include the time separator in the result string.
「/」(カスタム書式指定子)"/" (custom format specifier) DateSeparator、結果の文字列の日付の区切り記号を含める。DateSeparator, to include the date separator in the result string.

DateTimeFormatInfo のプロパティを変更します。Modifying DateTimeFormatInfo properties

書き込み可能な関連プロパティを変更して、日付と時刻の書式指定文字列によって生成される結果文字列を変更するDateTimeFormatInfoオブジェクト。You can change the result string produced by date and time format strings by modifying the associated properties of a writable DateTimeFormatInfo object. あるかどうかをDateTimeFormatInfoオブジェクトは、書き込み可能な使用、IsReadOnlyプロパティ。To determine if a DateTimeFormatInfo object is writable, use the IsReadOnly property. カスタマイズする、DateTimeFormatInfoこの方法でオブジェクト。To customize a DateTimeFormatInfo object in this way:

  1. 読み取り/書き込みコピーを作成、DateTimeFormatInfo書式指定規則を変更するオブジェクト。Create a read/write copy of a DateTimeFormatInfo object whose formatting conventions you want to modify. (を参照してください、 DateTimeFormatInfo オブジェクトをインスタンス化するセクションです)。(See the Instantiating a DateTimeFormatInfo object section.)

  2. プロパティまたは目的の結果文字列を生成するために使用されるプロパティを変更します。Modify the property or properties that are used to produce the desired result string. (どのように書式設定メソッドの使用についてはDateTimeFormatInfo結果の文字列を定義するプロパティは、前のセクションをご覧ください書式指定文字列と DateTimeFormatInfo のプロパティ。)。(For information about how formatting methods use DateTimeFormatInfo properties to define result strings, see the previous section, Format strings and DateTimeFormatInfo properties.)

  3. ユーザー設定を使用して、DateTimeFormatInfoオブジェクトとして作成した、IFormatProvider書式指定メソッドの呼び出しで引数。Use the custom DateTimeFormatInfo object you created as the IFormatProvider argument in calls to formatting methods.

結果文字列の形式を変更するその他の 2 つの方法はあります。There are two other ways to change the format of a result string:

  • 使用することができます、 CultureAndRegionInfoBuilder (一意の名前を持つし、既存のドキュメントを補足するカルチャのカルチャ) のカスタム カルチャまたは置換カルチャ (1 つは、特定のカルチャではなく) のいずれかを定義するクラス。You can use the CultureAndRegionInfoBuilder class to define either a custom culture (a culture that has a unique name and that supplements existing cultures) or a replacement culture (one that is used instead of a specific culture). 保存でき、いずれかと、このカルチャをプログラムでアクセスCultureInfo.NET Framework でサポートされているオブジェクト。You can save and access this culture programmatically as you would any CultureInfo object supported by the .NET Framework.

  • 結果の文字列がカルチャに依存する、定義済みの形式に従っていない場合は、カスタムの日時書式指定文字列を使用することができます。If the result string is not culture-sensitive and doesn't follow a predefined format, you can use a custom date and time format string. たとえば、YYYYMMDDHHmmss の形式で日付と時刻のデータをシリアル化する場合生成できます結果の文字列をカスタム書式指定文字列を渡すことによって、DateTime.ToString(String)メソッド、およびするが、結果の文字列に変換できるに戻る、DateTime呼び出すことによって値、DateTime.ParseExactメソッド。For example, if you are serializing date and time data in the format YYYYMMDDHHmmss, you can generate the result string by passing the custom format string to the DateTime.ToString(String) method, and you can convert the result string back to a DateTime value by calling the DateTime.ParseExact method.

短い日付パターンを変更します。Changing the short date pattern

次の例では、"d"(短い形式の日付) の標準書式指定文字列によって生成された結果文字列の形式を変更します。The following example changes the format of a result string produced by the "d" (short date) standard format string. 関連付けられている変更ShortDatePatternEN-US または英語 (米国) カルチャを"m/d/yyyy"の既定値からプロパティ"yyyy'-"MM"-"dd"と"d"標準書式指定文字列の前に、と後の日付を表示する使用、ShortDatePatternプロパティは、変更されました。It changes the associated ShortDatePattern property for the en-US or English (United States) culture from its default of "M/d/yyyy" to "yyyy'-"MM"-"dd" and uses the "d" standard format string to display the date both before and after the ShortDatePattern property is changed.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2013, 8, 18); 
      CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");
      DateTimeFormatInfo dtfi = enUS.DateTimeFormat;
      
      Console.WriteLine("Before modifying DateTimeFormatInfo object: ");
      Console.WriteLine("{0}: {1}\n", dtfi.ShortDatePattern, 
                                    dateValue.ToString("d", enUS));

      // Modify the short date pattern.
      dtfi.ShortDatePattern = "yyyy-MM-dd";
      Console.WriteLine("After modifying DateTimeFormatInfo object: ");
      Console.WriteLine("{0}: {1}", dtfi.ShortDatePattern, 
                                    dateValue.ToString("d", enUS));
   }
}
// The example displays the following output:
//       Before modifying DateTimeFormatInfo object:
//       M/d/yyyy: 8/18/2013
//       
//       After modifying DateTimeFormatInfo object:
//       yyyy-MM-dd: 2013-08-18
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim dateValue As New Date(2013, 08, 18) 
      Dim enUS As CultureInfo = CultureInfo.CreateSpecificCulture("en-US")
      Dim dtfi As DateTimeFormatInfo = enUS.DateTimeFormat
      
      Console.WriteLine("Before modifying DateTimeFormatInfo object: ")
      Console.WriteLine("{0}: {1}", dtfi.ShortDatePattern, 
                                    dateValue.ToString("d", enUS))
      Console.WriteLine()
      
      ' Modify the short date pattern.
      dtfi.ShortDatePattern = "yyyy-MM-dd"
      Console.WriteLine("After modifying DateTimeFormatInfo object: ")
      Console.WriteLine("{0}: {1}", dtfi.ShortDatePattern, 
                                    dateValue.ToString("d", enUS))
   End Sub
End Module
' The example displays the following output:
'       Before modifying DateTimeFormatInfo object:
'       M/d/yyyy: 8/18/2013
'       
'       After modifying DateTimeFormatInfo object:
'       yyyy-MM-dd: 2013-08-18

日付の区切り記号を変更します。Changing the date separator character

次の例で、日付の区切り記号の変更、 DateTimeFormatInfo FR-FR カルチャの書式指定規則を表すオブジェクト。The following example changes the date separator character in a DateTimeFormatInfo object that represents the formatting conventions of the fr-FR culture. 例では前に、と後の日付を表示する"g"標準書式指定文字列を使用して、DateSeparatorプロパティを変更します。The example uses the "g" standard format string to display the date both before and after the DateSeparator property is changed.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2013, 08, 28); 
      CultureInfo frFR = CultureInfo.CreateSpecificCulture("fr-FR");
      DateTimeFormatInfo dtfi = frFR.DateTimeFormat;
      
      Console.WriteLine("Before modifying DateSeparator property: {0}",
                        dateValue.ToString("g", frFR));
      
      // Modify the date separator.
      dtfi.DateSeparator = "-";
      Console.WriteLine("After modifying the DateSeparator property: {0}",
                        dateValue.ToString("g", frFR));
   }
}
// The example displays the following output:
//       Before modifying DateSeparator property: 18/08/2013 00:00
//       After modifying the DateSeparator property: 18-08-2013 00:00
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim dateValue As New Date(2013, 08, 28) 
      Dim frFR As CultureInfo = CultureInfo.CreateSpecificCulture("fr-FR")
      Dim dtfi As DateTimeFormatInfo = frFR.DateTimeFormat
      
      Console.WriteLine("Before modifying DateSeparator property: {0}",
                        dateValue.ToString("g", frFR))
      
      ' Modify the date separator.
      dtfi.DateSeparator = "-"
      Console.WriteLine("After modifying the DateSeparator property: {0}",
                        dateValue.ToString("g", frFR))
   End Sub
End Module
' The example displays the following output:
'       Before modifying DateSeparator property: 28/08/2013 00:00
'       After modifying the DateSeparator property: 28-08-2013 00:00

曜日の省略名と、長い日付パターンを変更します。Changing day name abbreviations and the long date pattern

場合によっては、通常、丸 1 日と月の名前と月と年の日付の数が表示されます、長い日付パターンは長すぎる可能性があります。In some cases, the long date pattern, which typically displays the full day and month name along with the number of the day of the month and the year, may be too long. 次の例では、数字の後に 1 つの文字または 2 桁の日名の省略形、月名の省略形、および年を返す EN-US カルチャの長い日付パターンが短くなります。The following example shortens the long date pattern for the en-US culture to return a one-character or two-character day name abbreviation followed by the day number, the month name abbreviation, and the year. これは、短いに省略日名を割り当てることで、AbbreviatedDayNames配列、およびに割り当てられているカスタム書式指定文字列を変更すること、LongDatePatternプロパティ。It does this by assigning shorter day name abbreviations to the AbbreviatedDayNames array, and by modifying the custom format string assigned to the LongDatePattern property. これは、"D"によって返される結果の文字列と"f"標準書式指定文字列に影響します。This affects the result strings returned by the "D" and "f" standard format strings.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime value = new DateTime(2013, 7, 9);
      CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");
      DateTimeFormatInfo dtfi = enUS.DateTimeFormat;
      String[] formats = { "D", "F", "f" };

      // Display date before modifying properties.
      foreach (var fmt in formats)
         Console.WriteLine("{0}: {1}", fmt, value.ToString(fmt, dtfi));

      Console.WriteLine();
      
      // We don't want to change the FullDateTimePattern, so we need to save it.
      String originalFullDateTimePattern = dtfi.FullDateTimePattern;
      
      // Modify day name abbreviations and long date pattern.
      dtfi.AbbreviatedDayNames = new String[] { "Su", "M", "Tu", "W", "Th", "F", "Sa" };
      dtfi.LongDatePattern = "ddd dd-MMM-yyyy";
      dtfi.FullDateTimePattern = originalFullDateTimePattern;
      foreach (var fmt in formats)
         Console.WriteLine("{0}: {1}", fmt, value.ToString(fmt, dtfi));

   }
}
// The example displays the following output:
//       D: Tuesday, July 09, 2013
//       F: Tuesday, July 09, 2013 12:00:00 AM
//       f: Tuesday, July 09, 2013 12:00 AM
//       
//       D: Tu 09-Jul-2013
//       F: Tuesday, July 09, 2013 12:00:00 AM
//       f: Tu 09-Jul-2013 12:00 AM
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim value As New Date(2013, 7, 9)
      Dim enUS As CultureInfo = CultureInfo.CreateSpecificCulture("en-US")
      Dim dtfi As DateTimeFormatInfo = enUS.DateTimeFormat
      Dim formats() As String = { "D", "F", "f" }

      ' Display date before modifying properties.
      For Each fmt In formats
         Console.WriteLine("{0}: {1}", fmt, value.ToString(fmt, dtfi))
      Next
      Console.WriteLine()
      
      ' We don't want to change the FullDateTimePattern, so we need to save it.
      Dim originalFullDateTimePattern As String = dtfi.FullDateTimePattern
      
      ' Modify day name abbreviations and long date pattern.
      dtfi.AbbreviatedDayNames = { "Su", "M", "Tu", "W", "Th", "F", "Sa" }
      dtfi.LongDatePattern = "ddd dd-MMM-yyyy"
      dtfi.FullDateTimePattern = originalFullDateTimePattern
      For Each fmt In formats
         Console.WriteLine("{0}: {1}", fmt, value.ToString(fmt, dtfi))
      Next
   End Sub
End Module
' The example displays the following output:
'       D: Tuesday, July 09, 2013
'       F: Tuesday, July 09, 2013 12:00:00 AM
'       f: Tuesday, July 09, 2013 12:00 AM
'       
'       D: Tu 09-Jul-2013
'       F: Tuesday, July 09, 2013 12:00:00 AM
'       f: Tu 09-Jul-2013 12:00 AM

通常、変更をLongDatePatternプロパティに影響することも、FullDateTimePatternプロパティで、さらに、"F"標準書式指定文字列によって返される結果の文字列を定義します。Ordinarily, the change to the LongDatePattern property also affects the FullDateTimePattern property, which in turn defines the result string returned by the "F" standard format string. 例を元の完全な日付と時刻のパターンを維持するに割り当てられている元のカスタム書式指定文字列を再割り当て、FullDateTimePatternプロパティの後、LongDatePatternプロパティを変更します。To preserve the original full date and time pattern, the example reassigns the original custom format string assigned to the FullDateTimePattern property after the LongDatePattern property is modified.

12 時間制から 24 時間制に変更します。Changing from a 12-hour clock to a 24-hour clock

.NET framework カルチャの数、時間は 12 時間制および午前/午後を使用して表されます。For many cultures in the .NET Framework, the time is expressed by using a 12-hour clock and an AM/PM designator. 次の例では、定義、 ReplaceWith24HourClock 24 時間制を使用する形式を 12 時間制を使用している時刻の形式に置換するメソッド。The following example defines a ReplaceWith24HourClock method that replaces any time format that uses a 12-hour clock with a format that uses a 24-hour clock.

using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");
      DateTimeFormatInfo dtfi = enUS.DateTimeFormat;

      Console.WriteLine("Original Property Values:");
      Console.WriteLine("ShortTimePattern: " + dtfi.ShortTimePattern);
      Console.WriteLine("LongTimePattern: " + dtfi.LongTimePattern);
      Console.WriteLine("FullDateTimePattern: " + dtfi.FullDateTimePattern);
      Console.WriteLine();
      
      dtfi.LongTimePattern = ReplaceWith24HourClock(dtfi.LongTimePattern);
      dtfi.ShortTimePattern = ReplaceWith24HourClock(dtfi.ShortTimePattern);
      
      Console.WriteLine("Modififed Property Values:");
      Console.WriteLine("ShortTimePattern: " + dtfi.ShortTimePattern);
      Console.WriteLine("LongTimePattern: " + dtfi.LongTimePattern);
      Console.WriteLine("FullDateTimePattern: " + dtfi.FullDateTimePattern);
   }     
   
   private static string ReplaceWith24HourClock(string fmt)
   {
      string pattern = @"^(?<openAMPM>\s*t+\s*)? " +
                       @"(?(openAMPM) h+(?<nonHours>[^ht]+)$ " +
                       @"| \s*h+(?<nonHours>[^ht]+)\s*t+)";
      return Regex.Replace(fmt, pattern, "HH${nonHours}", 
                           RegexOptions.IgnorePatternWhitespace);   
   }
}
// The example displays the following output:
//       Original Property Values:
//       ShortTimePattern: h:mm tt
//       LongTimePattern: h:mm:ss tt
//       FullDateTimePattern: dddd, MMMM dd, yyyy h:mm:ss tt
//       
//       Modififed Property Values:
//       ShortTimePattern: HH:mm
//       LongTimePattern: HH:mm:ss
//       FullDateTimePattern: dddd, MMMM dd, yyyy HH:mm:ss
Imports System.Globalization
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim enUS As CultureInfo = CultureInfo.CreateSpecificCulture("en-US")
      Dim dtfi As DateTimeFormatInfo = enUS.DateTimeFormat

      Console.WriteLine("Original Property Values:")
      Console.WriteLine("ShortTimePattern: " + dtfi.ShortTimePattern)
      Console.WriteLine("LongTimePattern: " + dtfi.LongTimePattern)
      Console.WriteLine("FullDateTimePattern: " + dtfi.FullDateTimePattern)
      Console.WriteLine()
      
      dtfi.LongTimePattern = ReplaceWith24HourClock(dtfi.LongTimePattern)
      dtfi.ShortTimePattern = ReplaceWith24HourClock(dtfi.ShortTimePattern)
      
      Console.WriteLine("Modififed Property Values:")
      Console.WriteLine("ShortTimePattern: " + dtfi.ShortTimePattern)
      Console.WriteLine("LongTimePattern: " + dtfi.LongTimePattern)
      Console.WriteLine("FullDateTimePattern: " + dtfi.FullDateTimePattern)
   End Sub
   
   Private Function ReplaceWith24HourClock(fmt As String) As String
      Dim pattern As String = "^(?<openAMPM>\s*t+\s*)? " +
                              "(?(openAMPM) h+(?<nonHours>[^ht]+)$ " +
                              "| \s*h+(?<nonHours>[^ht]+)\s*t+)"
      Return Regex.Replace(fmt, pattern, "HH${nonHours}", RegexOptions.IgnorePatternWhitespace)   
   End Function
End Module
' The example displays the following output:
'       Original Property Values:
'       ShortTimePattern: h:mm tt
'       LongTimePattern: h:mm:ss tt
'       FullDateTimePattern: dddd, MMMM dd, yyyy h:mm:ss tt
'       
'       Modififed Property Values:
'       ShortTimePattern: HH:mm
'       LongTimePattern: HH:mm:ss
'       FullDateTimePattern: dddd, MMMM dd, yyyy HH:mm:ss

例では、正規表現を使用して、書式指定文字列を変更します。The example uses a regular expression to modify the format string. 正規表現パターン@"^(?<openAMPM>\s*t+\s*)? (?(openAMPM) h+(?<nonHours>[^ht]+)$ | \s*h+(?<nonHours>[^ht]+)\s*t+)が次のように定義されています。The regular expression pattern @"^(?<openAMPM>\s*t+\s*)? (?(openAMPM) h+(?<nonHours>[^ht]+)$ | \s*h+(?<nonHours>[^ht]+)\s*t+) is defined as follows:

パターンPattern 説明Description
^ 文字列の先頭から照合を開始します。Begin the match at the beginning of the string.
(?<openAMPM>\s*t+\s*)? 0 または 1 個の一致に出現する 0 個以上の空白文字は文字と文字のいずれかの"t"、または 0 個以上の空白文字の後に他にも。Match zero or one occurrence of zero or more white-space characters, followed by the letter "t" one or more times, followed by zero or more white-space characters. このキャプチャ グループの名前はopenAMPMします。This capturing group is named openAMPM.
(?(openAMPM) h+(?<nonHours>[^ht]+)$ 場合、openAMPMグループと一致するには、"h"も"t"である 1 つ以上の文字の後に 1 つまたは複数回、"h"の文字に一致します。If the openAMPM group has a match, match the letter "h" one or more times, followed by one or more characters that are neither "h" nor "t". 一致は、文字列の末尾で終了します。The match ends at the end of the string. "H"が名前付きキャプチャ グループに追加された後にキャプチャされたすべての文字nonHoursします。All characters captured after "h" are included in a capturing group named nonHours.
&#124; \s*h+(?<nonHours>[^ht]+)\s*t+) 場合、openAMPMグループが、一致しない、文字"h"の後ろに 1 つまたは複数の文字"h"も"t"である 1 つ以上の時間が続く 0 個以上の空白文字と一致します。If the openAMPM group does not have a match, match the letter "h" one or more times, followed by one or more characters that are neither "h" nor "t", followed by zero or more white-space characters. 最後に、文字"t"の 1 つ以上の出現に一致します。Finally, match one or more occurrences of the letter "t". 空白文字と"t"という名前のキャプチャ グループに含める前に、"h"の後にキャプチャされたすべての文字nonHoursします。All characters captured after "h" and before the white-spaces and "t" are included in a capturing group named nonHours.

nonHoursキャプチャ グループと含まれ、1 分可能性があります、カスタムの日付と時刻の形式の文字列の 2 番目のコンポーネントと共に、区切り記号。The nonHours capturing group contains the minute and possibly the second component of a custom date and time format string, along with any time separator symbols. 置換パターンHH${nonHours}これらの要素には、"HH"部分文字列の前に付加します。The replacement pattern HH${nonHours} prepends the substring "HH" to these elements.

表示して、日付の時代 (年号) を変更します。Displaying and changing the era in a date

次の例では、"g"カスタム書式指定子をLongDatePatternEN-US カルチャの書式指定規則を表すオブジェクトのプロパティ。The following example adds the "g" custom format specifier to the LongDatePattern property of an object that represents the formatting conventions of the en-US culture. この追加は、次の 3 つの標準書式指定文字列に影響します。This addition affects the following three standard format strings:

  • 直接マップされます (長い形式の日付) の"D"標準書式指定文字列、LongDatePatternプロパティ。The "D" (long date) standard format string, which maps directly to the LongDatePattern property.

  • "F"(完全な日付/時間の短い) 標準書式指定文字列は、によって生成された部分文字列を連結した結果の文字列を生成、LongDatePatternShortTimePatternプロパティ。The "f" (full date / short time) standard format string, which produces a result string that concatenates the substrings produced by the LongDatePattern and ShortTimePattern properties.

  • "F"(完全な日付/時間の長い時間) に直接マップされる標準書式指定文字列、FullDateTimePatternプロパティ。The "F" (full date / long time) standard format string, which maps directly to the FullDateTimePattern property. 連結することによって動的に生成されるため、このプロパティの値を明示的に設定します、LongDatePatternLongTimePatternプロパティ。Because we have not explicitly set this property value, it is generated dynamically by concatenating the LongDatePattern and LongTimePattern properties.

この例では、カレンダーが 1 つの時代 (年号) のカルチャの時代 (年号) の名前を変更する方法も示します。The example also shows how to change the era name for a culture whose calendar has a single era. ここでは、EN-US カルチャがによって表されるグレゴリオ暦のカレンダーを使用して、GregorianCalendarオブジェクト。In this case, the en-US culture uses the Gregorian calendar, which is represented by a GregorianCalendar object. GregorianCalendarクラスは、西暦は名前が、1 つの時代をサポートしています。The GregorianCalendar class supports a single era, which it names A.D. (西暦)。(Anno Domini). 例は、紀元に時代 (年号) の名前を変更します。The example changes the era name to C.E. (一般的な時代 (年号)) に割り当てられている書式指定文字列で"g"カスタム書式指定子を置き換えることで、FullDateTimePatternリテラル文字列を持つプロパティです。(Common Era) by replacing the "g" custom format specifier in the format string assigned to the FullDateTimePattern property with a literal string. 時代 (年号) の名前がによって通常返されるので、リテラル文字列の使用は、GetEraNameから .NET Framework または Windows オペレーティング システムのいずれかで指定されたカルチャのテーブルでデータをプライベート メソッド。The use of a literal string is necessary, because the era name is typically returned by the GetEraName method from private data in the culture tables supplied by either the .NET Framework or the Windows operating system.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2013, 5, 18, 13, 30, 0);
      String[] formats = { "D", "f", "F" };      
      
      CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");
      DateTimeFormatInfo dtfi = enUS.DateTimeFormat;
      String originalLongDatePattern = dtfi.LongDatePattern;

      // Display the default form of three long date formats.
      foreach (var fmt in formats)
         Console.WriteLine(dateValue.ToString(fmt, dtfi));

      Console.WriteLine();
      
      // Modify the long date pattern.
      dtfi.LongDatePattern = originalLongDatePattern + " g";
      foreach (var fmt in formats)
         Console.WriteLine(dateValue.ToString(fmt, dtfi));

      Console.WriteLine();
      
      // Change A.D. to C.E. (for Common Era)
      dtfi.LongDatePattern = originalLongDatePattern + @" 'C.E.'";
      foreach (var fmt in formats)
         Console.WriteLine(dateValue.ToString(fmt, dtfi));

   }
}
// The example displays the following output:
//       Saturday, May 18, 2013
//       Saturday, May 18, 2013 1:30 PM
//       Saturday, May 18, 2013 1:30:00 PM
//       
//       Saturday, May 18, 2013 A.D.
//       Saturday, May 18, 2013 A.D. 1:30 PM
//       Saturday, May 18, 2013 A.D. 1:30:00 PM
//       
//       Saturday, May 18, 2013 C.E.
//       Saturday, May 18, 2013 C.E. 1:30 PM
//       Saturday, May 18, 2013 C.E. 1:30:00 PM
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim dateValue As New Date(2013, 5, 18, 13, 30, 0)
      Dim formats() As String = { "D", "f", "F" }      
      
      Dim enUS As CultureInfo = CultureInfo.CreateSpecificCulture("en-US")
      Dim dtfi As DateTimeFormatInfo = enUS.DateTimeFormat
      Dim originalLongDatePattern As String = dtfi.LongDatePattern

      ' Display the default form of three long date formats.
      For Each fmt In formats
         Console.WriteLine(dateValue.ToString(fmt, dtfi))
      Next
      Console.WriteLine()
      
      ' Modify the long date pattern.
      dtfi.LongDatePattern = originalLongDatePattern + " g"
      For Each fmt In formats
         Console.WriteLine(dateValue.ToString(fmt, dtfi))
      Next
      Console.WriteLine()
      
      ' Change A.D. to C.E. (for Common Era)
      dtfi.LongDatePattern = originalLongDatePattern + " 'C.E.'"
      For Each fmt In formats
         Console.WriteLine(dateValue.ToString(fmt, dtfi))
      Next
   End Sub
End Module
' The example displays the following output:
'       Saturday, May 18, 2013
'       Saturday, May 18, 2013 1:30 PM
'       Saturday, May 18, 2013 1:30:00 PM
'       
'       Saturday, May 18, 2013 A.D.
'       Saturday, May 18, 2013 A.D. 1:30 PM
'       Saturday, May 18, 2013 A.D. 1:30:00 PM
'       
'       Saturday, May 18, 2013 C.E.
'       Saturday, May 18, 2013 C.E. 1:30 PM
'       Saturday, May 18, 2013 C.E. 1:30:00 PM

日付と時刻文字列の解析Parsing date and time strings

解析の日付と時刻を文字列形式に変換する必要があります、DateTimeまたはDateTimeOffset値。Parsing involves converting the string representation of a date and time to a DateTime or DateTimeOffset value. これらの型の両方を含める、 ParseTryParseParseExact、およびTryParseExact解析操作をサポートするメソッド。Both of these types include the Parse, TryParse, ParseExact, and TryParseExact methods to support parsing operations. ParseTryParseメソッドをさまざまな形式にできる文字列に変換がParseExactTryParseExact文字列が、定義された形式または形式があることが必要です。The Parse and TryParse methods convert a string that can have a variety of formats, whereas ParseExact and TryParseExact require that the string have a defined format or formats. 解析操作が失敗した場合、ParseParseExact一方、例外はスローTryParseTryParseExact返すfalseします。If the parsing operation fails, Parse and ParseExact throw an exception, whereas TryParse and TryParseExact return false.

暗黙的または明示的に使用して解析メソッドをDateTimeStyles(先頭、末尾、または内部の空白文字) などのスタイル要素を決定する列挙値は、解析する文字列とが見つからないか、または解析された文字列を解釈する方法で使用可能要素。The parsing methods implicitly or explicitly use a DateTimeStyles enumeration value to determine which style elements (such as leading, trailing, or inner white space) can be present in the string to be parsed, and how to interpret the parsed string or any missing elements. 指定しない場合、DateTimeStylesを呼び出すときの値、ParseまたはTryParseメソッドでは、既定値はDateTimeStyles.AllowWhiteSpacesを含む複合スタイルは、 DateTimeStyles.AllowLeadingWhiteDateTimeStyles.AllowTrailingWhite、およびDateTimeStyles.AllowInnerWhiteフラグ。If you don't provide a DateTimeStyles value when you call the Parse or TryParse method, the default is DateTimeStyles.AllowWhiteSpaces, which is a composite style that includes the DateTimeStyles.AllowLeadingWhite, DateTimeStyles.AllowTrailingWhite, and DateTimeStyles.AllowInnerWhite flags. ParseExactTryParseExactメソッドでは、既定値はDateTimeStyles.None; 入力文字列が正確に特定のカスタム日付/時刻書式指定文字列に対応する必要があります。For the ParseExact and TryParseExact methods, the default is DateTimeStyles.None; the input string must correspond precisely to a particular custom date and time format string.

解析メソッドも暗黙的または明示的に使用して、DateTimeFormatInfoパターンを特定のシンボルを定義するオブジェクトを解析する文字列で発生する可能性が。The parsing methods also implicitly or explicitly use a DateTimeFormatInfo object that defines the specific symbols and patterns that can occur in the string to be parsed. 指定しない場合、DateTimeFormatInfoオブジェクト、DateTimeFormatInfoオブジェクトの現在のスレッド カルチャが既定で使用されます。If you don't provide a DateTimeFormatInfo object, the DateTimeFormatInfo object for the current thread culture is used by default. 日付と時刻の文字列の解析の詳細についてなど、個々 の解析メソッドを参照してくださいDateTime.ParseDateTime.TryParseDateTimeOffset.ParseExact、およびDateTimeOffset.TryParseExactします。For more information about parsing date and time strings, see the individual parsing methods, such as DateTime.Parse, DateTime.TryParse, DateTimeOffset.ParseExact, and DateTimeOffset.TryParseExact.

次の例では、解析の日付と時刻文字列のカルチャに依存する性質を示します。The following example illustrates the culture-sensitive nature of parsing date and time strings. EN-US、EN-GB、FR-FR、および fi FI カルチャの規則を使用して 2 つの日付文字列を解析しようとします。It tries to parse two date strings by using the conventions of the en-US, en-GB, fr-FR, and fi-FI cultures. 8/18/2014 では EN-US として解釈される日付カルチャがスローされます、 FormatException 18 が月の番号として解釈されるため、他の 3 つの例外がカルチャします。The date that is interpreted as 8/18/2014 in the en-US culture throws a FormatException exception in the other three cultures because 18 is interpreted as the month number. 2015 年 1 月 2 日は、EN-US カルチャでは、最初の月の 2 日目は残りのカルチャの 2 番目の月の最初の曜日として解析されます。1/2/2015 is parsed as the second day of the first month in the en-US culture, but as the first day of the second month in the remaining cultures.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = { "08/18/2014", "01/02/2015" };
      string[] cultureNames = { "en-US", "en-GB", "fr-FR", "fi-FI" };
      
      foreach (var cultureName in cultureNames) {
         CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
         Console.WriteLine("Parsing strings using the {0} culture.", 
                           culture.Name);
         foreach (var dateStr in dateStrings) {
            try {
               Console.WriteLine(String.Format(culture, 
                                 "   '{0}' --> {1:D}", dateStr, 
                                 DateTime.Parse(dateStr, culture)));
            }
            catch (FormatException) {
               Console.WriteLine("   Unable to parse '{0}'", dateStr);
            }
         }
      }
   }
}
// The example displays the following output:
//       Parsing strings using the en-US culture.
//          '08/18/2014' --> Monday, August 18, 2014
//          '01/02/2015' --> Friday, January 02, 2015
//       Parsing strings using the en-GB culture.
//          Unable to parse '08/18/2014'
//          '01/02/2015' --> 01 February 2015
//       Parsing strings using the fr-FR culture.
//          Unable to parse '08/18/2014'
//          '01/02/2015' --> dimanche 1 février 2015
//       Parsing strings using the fi-FI culture.
//          Unable to parse '08/18/2014'
//          '01/02/2015' --> 1. helmikuuta 2015
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim dateStrings() As String = { "08/18/2014", "01/02/2015" }
      Dim cultureNames() As String = { "en-US", "en-GB", "fr-FR", "fi-FI" }
      
      For Each cultureName In cultureNames
         Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
         Console.WriteLine("Parsing strings using the {0} culture.", 
                           culture.Name)
         For Each dateStr In dateStrings
            Try
               Console.WriteLine(String.Format(culture, 
                                 "   '{0}' --> {1:D}", dateStr, 
                                 DateTime.Parse(dateStr, culture)))
            Catch e As FormatException
               Console.WriteLine("   Unable to parse '{0}'", dateStr)
            End Try
         Next
      Next
   End Sub
End Module
' The example displays the following output:
'       Parsing strings using the en-US culture.
'          '08/18/2014' --> Monday, August 18, 2014
'          '01/02/2015' --> Friday, January 02, 2015
'       Parsing strings using the en-GB culture.
'          Unable to parse '08/18/2014'
'          '01/02/2015' --> 01 February 2015
'       Parsing strings using the fr-FR culture.
'          Unable to parse '08/18/2014'
'          '01/02/2015' --> dimanche 1 février 2015
'       Parsing strings using the fi-FI culture.
'          Unable to parse '08/18/2014'
'          '01/02/2015' --> 1. helmikuuta 2015

2 つの理由は、日付と時刻文字列は解析されます通常。Date and time strings are typically parsed for two reasons:

  • 日付と時刻の値にユーザー入力を変換します。To convert user input into a date and time value.

  • 日付と時刻の値をラウンドト リップさせるつまり、文字列としてシリアル化された以前の日付と時刻の値を逆シリアル化します。To round-trip a date and time value; that is, to deserialize a date and time value that was previously serialized as a string.

次のセクションには、さらに詳しくこれら 2 つの操作について説明します。The following sections discuss these two operations in greater detail.

ユーザー文字列の解析Parsing user strings

常にインスタンス化する必要がありますユーザーによって入力された日付と時刻の文字列を解析するときに、DateTimeFormatInfoなど、カスタマイズを行った可能性のあるユーザーのユーザーのカルチャ設定を反映するオブジェクト。When you parse date and time strings input by the user, you should always instantiate a DateTimeFormatInfo object that reflects the user's cultural settings, including any customizations the user may have made. それ以外の場合、日付と時刻のオブジェクトには、値が正しくない場合があります。Otherwise, the date and time object may have incorrect values. インスタンスを作成する方法については、DateTimeFormatInfoユーザーのカルチャのカスタマイズを反映するオブジェクトを参照してください、 DateTimeFormatInfo と動的データセクション。For information about how to instantiate a DateTimeFormatInfo object that reflects user cultural customizations, see the DateTimeFormatInfo and dynamic data section.

次の例は、ユーザーのカルチャ設定を反映する解析操作とにはない 1 つの違いを示しています。The following example illustrates the difference between a parsing operation that reflects user cultural settings and one that does not. ここでは、システムの既定のカルチャが EN-US では、ユーザーがコントロール パネル を使用している地域と言語"yy MM dd"に"m/d/yyyy"の既定値から短い日付パターンを変更します。In this case, the default system culture is en-US, but the user has used Control Panel, Region and Language to change the short date pattern from its default of "M/d/yyyy" to "yy/MM/dd". ときにユーザーが、ユーザー設定を反映する文字列を入力し、によって文字列が解析、DateTimeFormatInfoも (上書き) のユーザー設定が反映されているオブジェクトが解析操作が正しい結果を返します。When the user enters a string that reflects user settings, and the string is parsed by a DateTimeFormatInfo object that also reflects user settings (overrides), the parsing operation returns a correct result. ただし、文字列の解析時で、DateTimeFormatInfo標準的な EN-US カルチャ設定、解析メソッドでのスローを表すオブジェクトをFormatException例外が解釈されるため 14 として、月、数年の最後の 2 つの桁されません。However, when the string is parsed by a DateTimeFormatInfo object that reflects standard en-US cultural settings, the parsing method throws a FormatException exception because it interprets 14 as the number of the month, not the last two digits of the year.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string inputDate = "14/05/10";
      
      CultureInfo[] cultures = { CultureInfo.GetCultureInfo("en-US"), 
                                 CultureInfo.CreateSpecificCulture("en-US") };
      
      foreach (var culture in cultures) {
         try {
            Console.WriteLine("{0} culture reflects user overrides: {1}", 
                              culture.Name, culture.UseUserOverride);
            DateTime occasion = DateTime.Parse(inputDate, culture);
            Console.WriteLine("'{0}' --> {1}", inputDate, 
                              occasion.ToString("D", CultureInfo.InvariantCulture));
         }
         catch (FormatException) {
            Console.WriteLine("Unable to parse '{0}'", inputDate);                           
         }   
         Console.WriteLine();  
      }
   }
}
// The example displays the following output:
//       en-US culture reflects user overrides: False
//       Unable to parse '14/05/10'
//       
//       en-US culture reflects user overrides: True
//       '14/05/10' --> Saturday, 10 May 2014
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim inputDate As String = "14/05/10"
      
      Dim cultures() As CultureInfo = { CultureInfo.GetCultureInfo("en-US"), 
                                        CultureInfo.CreateSpecificCulture("en-US") }
      
      For Each culture In cultures
         Try
            Console.WriteLine("{0} culture reflects user overrides: {1}", 
                              culture.Name, culture.UseUserOverride)
            Dim occasion As DateTime = DateTime.Parse(inputDate, culture)
            Console.WriteLine("'{0}' --> {1}", inputDate, 
                              occasion.ToString("D", CultureInfo.InvariantCulture))
         Catch e As FormatException
            Console.WriteLine("Unable to parse '{0}'", inputDate)                           
         End Try   
         Console.WriteLine()  
      Next
   End Sub
End Module
' The example displays the following output:
'       en-US culture reflects user overrides: False
'       Unable to parse '14/05/10'
'       
'       en-US culture reflects user overrides: True
'       '14/05/10' --> Saturday, 10 May 2014

シリアル化して、日付と時刻のデータを逆シリアル化Serializing and deserializing date and time data

シリアル化された日付と時刻のデータをラウンドト リップ; に予想されます。つまり、すべてシリアル化し、逆シリアル化された値が同じであります。Serialized date and time data are expected to round-trip; that is, all serialized and deserialized values should be identical. 日付と時刻の値が特定の時点を表している場合、逆シリアル化された値は、カルチャまたは復元されたシステムのタイム ゾーンに関係なくの同じ時点を表す必要があります。If a date and time value represents a single moment in time, the deserialized value should represent the same moment in time regardless of the culture or time zone of the system on which it was restored. ラウンド トリップ日付と時刻のデータを正常にする必要があります規則を使用する、によって返されるインバリアント カルチャのInvariantInfoプロパティを生成し、データを解析します。To round-trip date and time data successfully, you must use the conventions of the invariant culture, which is returned by the InvariantInfo property, to generate and parse the data. 書式設定と解析操作では、既定のカルチャの規則は反映されませんする必要があります。The formatting and parsing operations should never reflect the conventions of the default culture. データの移植性が厳密に制限されます。 既定のカルチャ設定を使用する場合特定のカルチャ設定がシリアル化されたスレッドのものと同じスレッドでのみ正常に逆シリアル化ができます。If you use default cultural settings, the portability of the data is strictly limited; it can be successfully deserialized only on a thread whose cultural-specific settings are identical to those of the thread on which it was serialized. 場合によっては、つまりデータことはできませんもが正常にシリアル化、同じシステムで逆シリアル化します。In some cases, this means that the data cannot even be successfully serialized and deserialized on the same system.

日付と時刻の値の時刻部分が重要な場合はもが UTC に変換して、"o"または"r"を使用してシリアル化標準書式指定文字列します。If the time component of a date and time value is significant, it should also be converted to UTC and serialized by using the "o" or "r" standard format string. 解析メソッドと、インバリアント カルチャとしてと共に、適切な形式文字列を渡して呼び出すことによって、時刻のデータを復元できます、provider引数。The time data can then be restored by calling a parsing method and passing it the appropriate format string along with the invariant culture as the provider argument.

次の例では、日付と時刻の値のラウンド トリップのプロセスを示します。The following example illustrates the process of round-tripping a date and time value. 米国の監視システム上の日時をシリアル化します。太平洋標準時と現在のカルチャが en-us (英語)。It serializes a date and time on a system that observes U.S. Pacific time and whose current culture is en-US.

using System;
using System.Globalization;
using System.IO;

public class Example
{
   public static void Main()
   {
      StreamWriter sw = new StreamWriter(@".\DateData.dat");
      // Define a date and time to serialize.
      DateTime originalDate = new DateTime(2014, 08, 18, 08, 16, 35);
      // Display information on the date and time.
      Console.WriteLine("Date to serialize: {0:F}", originalDate);
      Console.WriteLine("Current Culture:   {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("Time Zone:         {0}", 
                        TimeZoneInfo.Local.DisplayName);
      // Convert the date value to UTC.
      DateTime utcDate = originalDate.ToUniversalTime();
      // Serialize the UTC value.
      sw.Write(utcDate.ToString("o", DateTimeFormatInfo.InvariantInfo));
      sw.Close();
   }
}
// The example displays the following output:
//       Date to serialize: Monday, August 18, 2014 8:16:35 AM
//       Current Culture:   en-US
//       Time Zone:         (UTC-08:00) Pacific Time (US & Canada)
Imports System.Globalization
Imports System.IO

Module Example
   Public Sub Main()
      Dim sw As New StreamWriter(".\DateData.dat")
      ' Define a date and time to serialize.
      Dim originalDate As New Date(2014, 08, 18, 08, 16, 35)
      ' Display information on the date and time.
      Console.WriteLine("Date to serialize: {0:F}", originalDate)
      Console.WriteLine("Current Culture:   {0}", 
                        CultureInfo.CurrentCulture.Name)
      Console.WriteLine("Time Zone:         {0}", 
                        TimeZoneInfo.Local.DisplayName)
      ' Convert the date value to UTC.
      Dim utcDate As Date = originalDate.ToUniversalTime()
      ' Serialize the UTC value.
      sw.Write(utcDate.ToString("o", DateTimeFormatInfo.InvariantInfo))
      sw.Close()
   End Sub
End Module
' The example displays the following output:
'       Date to serialize: Monday, August 18, 2014 8:16:35 AM
'       Current Culture:   en-US
'       Time Zone:         (UTC-08:00) Pacific Time (US & Canada)

ブリュッセル、コペンハーゲン、マドリード、パリのタイム ゾーンのシステム上でデータを逆シリアル化して、現在のカルチャが個It deserializes the data on a system in the Brussels, Copenhagen, Madrid and Paris time zone and whose current culture is fr-FR. 復元された日付は 9 個の時間を UTC より 8 時間から UTC より 1 時間のタイム ゾーン調整を反映する元の日付よりも後。The restored date is nine hours later than the original date, which reflects the time zone adjustment from eight hours behind UTC to one hour ahead of UTC. 元の日付と復元の日付の両方の同じ時点を表します。Both the original date and the restored date represent the same moment in time.

using System;
using System.Globalization;
using System.IO;

public class Example
{
   public static void Main()
   {
      // Open the file and retrieve the date string.
      StreamReader sr = new StreamReader(@".\DateData.dat");             
      String dateValue = sr.ReadToEnd();
      
      // Parse the date.
      DateTime parsedDate = DateTime.ParseExact(dateValue, "o", 
                            DateTimeFormatInfo.InvariantInfo);
      // Convert it to local time.                             
      DateTime restoredDate = parsedDate.ToLocalTime();
      // Display information on the date and time.
      Console.WriteLine("Deserialized date: {0:F}", restoredDate);
      Console.WriteLine("Current Culture:   {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("Time Zone:         {0}", 
                        TimeZoneInfo.Local.DisplayName);
   }
}
// The example displays the following output:
//    Deserialized date: lundi 18 août 2014 17:16:35
//    Current Culture:   fr-FR
//    Time Zone:         (UTC+01:00) Brussels, Copenhagen, Madrid, Paris
Imports System.Globalization
Imports System.IO

Module Example
   Public Sub Main()
      ' Open the file and retrieve the date string.
      Dim sr As New StreamReader(".\DateData.dat")             
      Dim dateValue As String = sr.ReadToEnd()
      
      ' Parse the date.
      Dim parsedDate As Date = Date.ParseExact(dateValue, "o", 
                               DateTimeFormatInfo.InvariantInfo)
      ' Convert it to local time.                             
      Dim restoredDate As Date = parsedDate.ToLocalTime()
      ' Display information on the date and time.
      Console.WriteLine("Deserialized date: {0:F}", restoredDate)
      Console.WriteLine("Current Culture:   {0}", 
                        CultureInfo.CurrentCulture.Name)
      Console.WriteLine("Time Zone:         {0}", 
                        TimeZoneInfo.Local.DisplayName)
   End Sub
End Module
' The example displays the following output:
'    Deserialized date: lundi 18 août 2014 17:16:35
'    Current Culture:   fr-FR
'    Time Zone:         (UTC+01:00) Brussels, Copenhagen, Madrid, Paris

コンストラクター

DateTimeFormatInfo() DateTimeFormatInfo() DateTimeFormatInfo() DateTimeFormatInfo()

カルチャに依存しない (インバリアントな) DateTimeFormatInfo クラスの新しい書き込み可能インスタンスを初期化します。Initializes a new writable instance of the DateTimeFormatInfo class that is culture-independent (invariant).

プロパティ

AbbreviatedDayNames AbbreviatedDayNames AbbreviatedDayNames AbbreviatedDayNames

曜日を表すカルチャ固有の省略名を格納している型 String の 1 次元配列を取得または設定します。Gets or sets a one-dimensional array of type String containing the culture-specific abbreviated names of the days of the week.

AbbreviatedMonthGenitiveNames AbbreviatedMonthGenitiveNames AbbreviatedMonthGenitiveNames AbbreviatedMonthGenitiveNames

現在の DateTimeFormatInfo オブジェクトに関連付けられた月の省略名の文字列配列を取得または設定します。Gets or sets a string array of abbreviated month names associated with the current DateTimeFormatInfo object.

AbbreviatedMonthNames AbbreviatedMonthNames AbbreviatedMonthNames AbbreviatedMonthNames

月を表すカルチャ固有の省略名を格納している 1 次元配列を取得または設定します。Gets or sets a one-dimensional string array that contains the culture-specific abbreviated names of the months.

AMDesignator AMDesignator AMDesignator AMDesignator

"ante meridiem" (午前) の時間の文字列指定子を取得または設定します。Gets or sets the string designator for hours that are "ante meridiem" (before noon).

Calendar Calendar Calendar Calendar

現在のカルチャで使用する暦を取得または設定します。Gets or sets the calendar to use for the current culture.

CalendarWeekRule CalendarWeekRule CalendarWeekRule CalendarWeekRule

年の最初の週を判断するために使用する規則を指定する値を取得または設定します。Gets or sets a value that specifies which rule is used to determine the first calendar week of the year.

CurrentInfo CurrentInfo CurrentInfo CurrentInfo

現在のカルチャに基づいて値を形式指定する読み取り専用 DateTimeFormatInfo オブジェクトを取得します。Gets a read-only DateTimeFormatInfo object that formats values based on the current culture.

DateSeparator DateSeparator DateSeparator DateSeparator

日付の構成要素、つまり年、月、および日を区切る文字列を取得または設定します。Gets or sets the string that separates the components of a date, that is, the year, month, and day.

DayNames DayNames DayNames DayNames

曜日を表すカルチャ固有の完全名を格納する 1 次元の文字列配列を取得または設定します。Gets or sets a one-dimensional string array that contains the culture-specific full names of the days of the week.

FirstDayOfWeek FirstDayOfWeek FirstDayOfWeek FirstDayOfWeek

週の最初の曜日を取得または設定します。Gets or sets the first day of the week.

FullDateTimePattern FullDateTimePattern FullDateTimePattern FullDateTimePattern

長い日付値と長い時刻値のカスタム書式指定文字列を取得または設定します。Gets or sets the custom format string for a long date and long time value.

InvariantInfo InvariantInfo InvariantInfo InvariantInfo

カルチャに依存しない (インバリアントな) 既定の読み取り専用 DateTimeFormatInfo を取得します。Gets the default read-only DateTimeFormatInfo object that is culture-independent (invariant).

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

DateTimeFormatInfo オブジェクトが読み取り専用かどうかを示す値を取得します。Gets a value indicating whether the DateTimeFormatInfo object is read-only.

LongDatePattern LongDatePattern LongDatePattern LongDatePattern

長い日付値のカスタム書式指定文字列を取得または設定します。Gets or sets the custom format string for a long date value.

LongTimePattern LongTimePattern LongTimePattern LongTimePattern

長い時刻値のカスタム書式指定文字列を取得または設定します。Gets or sets the custom format string for a long time value.

MonthDayPattern MonthDayPattern MonthDayPattern MonthDayPattern

月と日の値のカスタム書式指定文字列を取得または設定します。Gets or sets the custom format string for a month and day value.

MonthGenitiveNames MonthGenitiveNames MonthGenitiveNames MonthGenitiveNames

現在の DateTimeFormatInfo オブジェクトに関連付けられた月名の文字列配列を取得または設定します。Gets or sets a string array of month names associated with the current DateTimeFormatInfo object.

MonthNames MonthNames MonthNames MonthNames

月を表すカルチャ固有の完全名を格納している型 String の 1 次元配列を取得または設定します。Gets or sets a one-dimensional array of type String containing the culture-specific full names of the months.

NativeCalendarName NativeCalendarName NativeCalendarName NativeCalendarName

現在の DateTimeFormatInfo オブジェクトに関連付けられた暦のネイティブ名を取得します。Gets the native name of the calendar associated with the current DateTimeFormatInfo object.

PMDesignator PMDesignator PMDesignator PMDesignator

"post meridiem" (午後) の時間の文字列指定子を取得または設定します。Gets or sets the string designator for hours that are "post meridiem" (after noon).

RFC1123Pattern RFC1123Pattern RFC1123Pattern RFC1123Pattern

インターネット技術標準化委員会の (IETF) の Request for Comments (RFC) 1123 仕様に基づく時刻値のカスタム書式指定文字列を取得します。Gets the custom format string for a time value that is based on the Internet Engineering Task Force (IETF) Request for Comments (RFC) 1123 specification.

ShortDatePattern ShortDatePattern ShortDatePattern ShortDatePattern

短い日付値のカスタム書式指定文字列を取得または設定します。Gets or sets the custom format string for a short date value.

ShortestDayNames ShortestDayNames ShortestDayNames ShortestDayNames

現在の DateTimeFormatInfo オブジェクトに関連付けられた曜日の最も短い一意の省略名の文字列配列を取得または設定します。Gets or sets a string array of the shortest unique abbreviated day names associated with the current DateTimeFormatInfo object.

ShortTimePattern ShortTimePattern ShortTimePattern ShortTimePattern

短い時刻値のカスタム書式指定文字列を取得または設定します。Gets or sets the custom format string for a short time value.

SortableDateTimePattern SortableDateTimePattern SortableDateTimePattern SortableDateTimePattern

並べ替え可能な日付と時刻の値のカスタム書式指定文字列を取得します。Gets the custom format string for a sortable date and time value.

TimeSeparator TimeSeparator TimeSeparator TimeSeparator

時刻の構成要素、つまり時間、分、および秒を区切る文字列を取得または設定します。Gets or sets the string that separates the components of time, that is, the hour, minutes, and seconds.

UniversalSortableDateTimePattern UniversalSortableDateTimePattern UniversalSortableDateTimePattern UniversalSortableDateTimePattern

ユニバーサルで並べ替え可能な日付と時刻の文字列のカスタム書式指定文字列を取得します。Gets the custom format string for a universal, sortable date and time string.

YearMonthPattern YearMonthPattern YearMonthPattern YearMonthPattern

年と月の値のカスタム書式指定文字列を取得または設定します。Gets or sets the custom format string for a year and month value.

方法

Clone() Clone() Clone() Clone()

DateTimeFormatInfo の簡易コピーを作成します。Creates a shallow copy of the DateTimeFormatInfo.

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

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetAbbreviatedDayName(DayOfWeek) GetAbbreviatedDayName(DayOfWeek) GetAbbreviatedDayName(DayOfWeek) GetAbbreviatedDayName(DayOfWeek)

現在の DateTimeFormatInfo オブジェクトに関連付けられたカルチャに基づいて、指定した曜日のカルチャ固有の省略名を返します。Returns the culture-specific abbreviated name of the specified day of the week based on the culture associated with the current DateTimeFormatInfo object.

GetAbbreviatedEraName(Int32) GetAbbreviatedEraName(Int32) GetAbbreviatedEraName(Int32) GetAbbreviatedEraName(Int32)

省略形が存在する場合は、指定した時代 (年号) の省略名を格納している文字列を返します。Returns the string containing the abbreviated name of the specified era, if an abbreviation exists.

GetAbbreviatedMonthName(Int32) GetAbbreviatedMonthName(Int32) GetAbbreviatedMonthName(Int32) GetAbbreviatedMonthName(Int32)

現在の DateTimeFormatInfo オブジェクトに関連付けられたカルチャに基づいて、指定した月のカルチャ固有の省略名を返します。Returns the culture-specific abbreviated name of the specified month based on the culture associated with the current DateTimeFormatInfo object.

GetAllDateTimePatterns() GetAllDateTimePatterns() GetAllDateTimePatterns() GetAllDateTimePatterns()

日付と時刻の値を形式指定できるすべての標準パターンを返します。Returns all the standard patterns in which date and time values can be formatted.

GetAllDateTimePatterns(Char) GetAllDateTimePatterns(Char) GetAllDateTimePatterns(Char) GetAllDateTimePatterns(Char)

指定された標準書式指定文字列を使用して日付と時刻の値を形式指定できるすべてのパターンを返します。Returns all the patterns in which date and time values can be formatted using the specified standard format string.

GetDayName(DayOfWeek) GetDayName(DayOfWeek) GetDayName(DayOfWeek) GetDayName(DayOfWeek)

現在の DateTimeFormatInfo オブジェクトに関連付けられたカルチャに基づいて、指定した曜日のカルチャ固有の完全名を返します。Returns the culture-specific full name of the specified day of the week based on the culture associated with the current DateTimeFormatInfo object.

GetEra(String) GetEra(String) GetEra(String) GetEra(String)

指定した時代 (年号) を表す整数を返します。Returns the integer representing the specified era.

GetEraName(Int32) GetEraName(Int32) GetEraName(Int32) GetEraName(Int32)

指定した時代 (年号) の名前を格納している文字列を返します。Returns the string containing the name of the specified era.

GetFormat(Type) GetFormat(Type) GetFormat(Type) GetFormat(Type)

日付と時刻の書式指定サービスを提供する指定した型のオブジェクトを返します。Returns an object of the specified type that provides a date and time formatting service.

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

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetInstance(IFormatProvider) GetInstance(IFormatProvider) GetInstance(IFormatProvider) GetInstance(IFormatProvider)

指定した DateTimeFormatInfo に関連付けられている IFormatProvider オブジェクトを返します。Returns the DateTimeFormatInfo object associated with the specified IFormatProvider.

GetMonthName(Int32) GetMonthName(Int32) GetMonthName(Int32) GetMonthName(Int32)

現在の DateTimeFormatInfo オブジェクトに関連付けられたカルチャに基づいて、指定した月のカルチャ固有の完全名を返します。Returns the culture-specific full name of the specified month based on the culture associated with the current DateTimeFormatInfo object.

GetShortestDayName(DayOfWeek) GetShortestDayName(DayOfWeek) GetShortestDayName(DayOfWeek) GetShortestDayName(DayOfWeek)

現在の DateTimeFormatInfo オブジェクトに関連付けられた、指定した曜日の最も短い省略名を取得します。Obtains the shortest abbreviated day name for a specified day of the week associated with the current DateTimeFormatInfo object.

GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ReadOnly(DateTimeFormatInfo) ReadOnly(DateTimeFormatInfo) ReadOnly(DateTimeFormatInfo) ReadOnly(DateTimeFormatInfo)

読み取り専用 DateTimeFormatInfo ラッパーを返します。Returns a read-only DateTimeFormatInfo wrapper.

SetAllDateTimePatterns(String[], Char) SetAllDateTimePatterns(String[], Char) SetAllDateTimePatterns(String[], Char) SetAllDateTimePatterns(String[], Char)

指定された標準書式指定文字列に対応する、カスタムの日付と時刻の書式指定文字列を設定します。Sets the custom date and time format strings that correspond to a specified standard format string.

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

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

明示的なインターフェイスの実装

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

適用対象

こちらもご覧ください