DateTimeFormatInfo クラス

定義

日付と時刻の値の書式に関するカルチャ固有の情報を提供します。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
継承
DateTimeFormatInfo
属性
実装

次の例では、リフレクションを使用して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. および午後and P.M. 時刻値で使用される指定子。designators used in time values.

  • 日付を表す暦。The calendar in which dates are expressed.

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

DateTimeFormatInfo オブジェクトのインスタンス化Instantiating a DateTimeFormatInfo object

オブジェクトDateTimeFormatInfoは、インバリアントカルチャ、特定のカルチャ、ニュートラルカルチャ、または現在のカルチャの書式指定規則を表すことができます。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-us はカナダで話されている英語の言語を表す特定のカルチャです。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-us カルチャDateTimeFormatInfoの書式指定規則が反映され、fr カルチャのオブジェクトには 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の場合、プロパティの値が同一である場合は、2つの暦が等しいと見なされます。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.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. たとえば、カルチャが英語 (米国) のユーザーは、既定の12時間制 (h:mm: ss tt の形式) ではなく、24時間制 (HH: mm: ss 形式) を使用して長い時刻値を表示できます。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)コンストラクターを呼び出し、 useUserOverride引数にの値を指定することによって、ユーザーのfalseオーバーライドを反映しないオブジェクトを作成し (読み取り専用ではなく、読み取り/書き込みも可能)、オブジェクトを作成できます。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. 次の例では、現在のカルチャが英語 (米国) で、長い時間パターンが既定の h:mm: ss tt から HH: mm: ss に変更されているシステムについて説明します。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 Update には、特定の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. この場合、 CurrentInfoプロパティにDateTimeFormatInfoよって返されるオブジェクトは、現在のカルチャに関連付けられているオブジェクトに変更されます。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. プロパティがにtrue設定されている場合は、 DateTimeFormatInfoオブジェクトのプロパティもユーザー設定から取得されます。 CultureInfo.UseUserOverrideIf the CultureInfo.UseUserOverride property is set to true, the properties of the DateTimeFormatInfo object is also retrieved from the user settings. ユーザー設定がCultureInfoオブジェクトに関連付けられているカルチャと互換性がない場合 (たとえば、選択したカレンダーがOptionalCalendarsプロパティで示されるカレンダーの1つではない場合など)、メソッドの結果とプロパティの値が返されます。定義されていません。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

オブジェクトDateTimeFormatInfoは、すべての日付と時刻の書式設定操作で暗黙的または明示的に使用されます。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には、 IFormatProvider.GetFormat(Type)という1つのメソッドが含まれています。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 には、 IFormatProvider日付と時刻を書式設定するための2つの実装が含まれています。The .NET Framework includes two IFormatProvider implementations for formatting dates and times:

実装が書式指定メソッドに明示的CultureInfoに指定されていない場合はCultureInfo.CurrentCulture 、現在のスレッドカルチャを表すプロパティによって返されるオブジェクトが使用されます。 IFormatProviderIf 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[])書式設定情報を提供するためにオブジェクトをNumberFormatInfo要求DateTimeFormatInfoします。一方、 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. これらの書式指定子の使用方法の詳細については、「標準の日付と時刻の書式指定文字列」および「カスタム日時書式指定文字列」を参照してください。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クラスを使用して、カスタムカルチャ (一意の名前を持ち、既存のカルチャを補足するカルチャ)、または置換カルチャ (特定のカルチャの代わりに使用されるカルチャ) のいずれかを定義できます。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). このカルチャは、.NET Framework でサポートされているCultureInfoオブジェクトと同様に、プログラムによって保存およびアクセスできます。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. En-us または English ShortDatePattern (米国) カルチャの関連プロパティを既定値の "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

次の例では、fr-fr カルチャの書式DateTimeFormatInfo指定規則を表すオブジェクトの日付の区切り記号を変更します。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

場合によっては、長い日付パターンを使用することもあります。このパターンでは、通常、日と月の完全な名前と、その月と年の日の番号が表示されます。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. 次の例では、en-us カルチャの長い日付パターンを短縮して、1文字または2桁の曜日名の省略形とその後に日番号、月の名前の省略形、および年を返します。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時間制と AM/PM 指定子を使用して表されます。For many cultures in the .NET Framework, the time is expressed by using a 12-hour clock and an AM/PM designator. 次の例ではReplaceWith24HourClock 、12時間制を使用する任意の時刻形式を、24時間制の形式に置き換えるメソッドを定義しています。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個以上の空白文字の後に文字 "t" を1回または複数回続け、その後に0個以上の空白文字が続くパターンの0回または1回の繰り返しに一致します。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" を1回以上一致とし、その後に "h" も "t" でもない1つ以上の文字を入力します。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" でもなく、0個以上の空白文字が続く1つ以上の文字が続くパターンに一致します。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". "H" の後、および空白と "t" の前にキャプチャされたすべての文字は、 nonHoursという名前のキャプチャグループに含まれます。All characters captured after "h" and before the white-spaces and "t" are included in a capturing group named nonHours.

キャプチャnonHoursグループには、カスタム日時書式指定文字列の分と、場合によっては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

次の例では、en-us カルチャの書式指定規則をLongDatePattern表すオブジェクトのプロパティに "g" カスタム書式指定子を追加します。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:

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

  • "F" (完全な日付と短い形式の時刻) 標準書式指定文字列。プロパティLongDatePatternおよびShortTimePatternプロパティによって生成される部分文字列を連結する結果文字列を生成します。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. このプロパティ値は明示的に設定されていないため、プロパティとLongDatePattern LongTimePatternプロパティを連結することによって動的に生成されます。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. (キリスト Domini)。(Anno Domini). この例では、時代 (年号) の名前を紀元に変更します。The example changes the era name to C.E. FullDateTimePatternプロパティに割り当てられた書式指定文字列の "g" カスタム書式指定子をリテラル文字列に置き換えることにより、(共通時代 (年号))。(Common Era) by replacing the "g" custom format specifier in the format string assigned to the FullDateTimePattern property with a literal string. 通常、時代 (年号) 名は、.NET Framework または Windows オペレーティングシステムによってGetEraName提供されるカルチャテーブルのプライベートデータからメソッドによって返されるため、リテラル文字列を使用する必要があります。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. これらの両方の型にParseTryParse ParseExact、解析操作TryParseExactをサポートする、、、およびの各メソッドが含まれています。Both of these types include the Parse, TryParse, ParseExact, and TryParseExact methods to support parsing operations. メソッドParseTryParseメソッドは、さまざまな形式を持つことができる文字列をParseExact変換TryParseExactします。一方、は、文字列の形式が定義されている必要があります。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. 解析操作Parseが失敗ParseExactし、例外をTryParseスローした場合、 TryParseExactfalseはを返します。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メソッドDateTimeStyles.AllowInnerWhite DateTimeStyles.AllowWhiteSpaces DateTimeStyles.AllowTrailingWhite DateTimeStyles.AllowLeadingWhiteまたはメソッドを呼び出すときに値を指定しなかった場合、既定値はになります。これは、、、およびの各フラグを含む複合スタイルです。TryParse ParseIf 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. ParseExactメソッドとTryParseExactメソッドの場合、既定値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.Parse、「 DateTimeOffset.ParseExact」、「」などの個々の解析メソッドDateTime.TryParse 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-us、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. En-us カルチャで8/18/2014 として解釈される日付は、18がFormatException月の数値として解釈されるため、他の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. 1/2/2015 は 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 and dynamic data 」セクションを参照してください。For information about how to instantiate a DateTimeFormatInfo object that reflects user cultural customizations, see the DateTimeFormatInfo and dynamic data section.

次の例は、ユーザーのカルチャ設定を反映する解析操作と、それ以外の設定を比較した場合の違いを示しています。The following example illustrates the difference between a parsing operation that reflects user cultural settings and one that does not. この場合、既定のシステムカルチャは en-us ですが、ユーザーは コントロールパネル、地域と言語 を使用して、短い日付パターンを既定値の "M/d/yyyy" から "YY/MM/dd" に変更しました。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. ただし、文字列が標準の en-us カルチャ設定DateTimeFormatInfoを反映するオブジェクトによって解析される場合、解析メソッドはFormatException 、年の最後の2桁ではなく、月の数として14を解釈するため、例外をスローします。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. 日付と時刻の値が1つの時点を表す場合、逆シリアル化された値は、復元元のシステムのカルチャまたはタイムゾーンに関係なく、同じ時間を表す必要があります。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)

これは、ブリュッセル、コペンハーゲン、レアルマドリード、パリのタイムゾーンのシステム上のデータを逆シリアル化し、現在のカルチャが fr-fr であることを示します。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 クラスの新しい書き込み可能インスタンスを初期化します。Initializes a new writable instance of the DateTimeFormatInfo class that is culture-independent (invariant).

プロパティ

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

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

AbbreviatedMonthNames

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

AMDesignator

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

Calendar

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

CalendarWeekRule

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

CurrentInfo

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

DateSeparator

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

DayNames

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

FirstDayOfWeek

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

FullDateTimePattern

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

InvariantInfo

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

IsReadOnly

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

LongDatePattern

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

LongTimePattern

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

MonthDayPattern

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

MonthGenitiveNames

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

MonthNames

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

NativeCalendarName

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

PMDesignator

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

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

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

ShortestDayNames

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

ShortTimePattern

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

SortableDateTimePattern

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

TimeSeparator

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

UniversalSortableDateTimePattern

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

YearMonthPattern

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

メソッド

Clone()

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

Equals(Object)

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

(継承元 Object)
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)

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

GetAbbreviatedMonthName(Int32)

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

GetAllDateTimePatterns()

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

GetAllDateTimePatterns(Char)

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

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)

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

GetEraName(Int32)

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

GetFormat(Type)

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

GetHashCode()

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

(継承元 Object)
GetInstance(IFormatProvider)

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

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)

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

GetType()

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

(継承元 Object)
MemberwiseClone()

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

(継承元 Object)
ReadOnly(DateTimeFormatInfo)

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

SetAllDateTimePatterns(String[], Char)

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

ToString()

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

(継承元 Object)

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

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

適用対象

こちらもご覧ください