JapaneseCalendar.ToDateTime Метод

Определение

DateTime Возвращает значение указанной даты и времени в указанной эре.

public:
 override DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era);
public override DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era);
override this.ToDateTime : int * int * int * int * int * int * int * int -> DateTime
Public Overrides Function ToDateTime (year As Integer, month As Integer, day As Integer, hour As Integer, minute As Integer, second As Integer, millisecond As Integer, era As Integer) As DateTime

Параметры

year
Int32

Целое число, представляющее год.

month
Int32

Целое число от 1 до 12, представляющее месяц.

day
Int32

Целое число от 1 до 31, представляющее день.

hour
Int32

Целое число от 0 до 23, представляющее час.

minute
Int32

Целое число от 0 до 59, представляющее минуту.

second
Int32

Целое число от 0 до 59, представляющее второй.

millisecond
Int32

Целое число от 0 до 999, представляющее миллисекунда.

era
Int32

Целое число, представляющее эпоху.

Возвращаемое значение

Для DateTime параметра задана указанная дата и время в текущей эре.

Исключения

year находится вне диапазона, поддерживаемого календарем.

–или–

month находится вне диапазона, поддерживаемого календарем.

–или–

day находится вне диапазона, поддерживаемого календарем.

–или–

hour меньше нуля или больше 23.

–или–

minute меньше нуля или больше 59.

–или–

second меньше нуля или больше 59.

–или–

millisecond меньше нуля или больше 999.

–или–

era находится вне диапазона, поддерживаемого календарем.

Примеры

В следующем примере создается экземпляр двух дат. Первый всегда первый день второго года в текущей эре, в то время как второй идентифицирует конкретный день в эпоху Тайшо. Выходные данные из примера были созданы с эрой Heisei в качестве текущей эпохи.

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        var cal = new JapaneseCalendar();
        var jaJp = new CultureInfo("ja-JP");
        jaJp.DateTimeFormat.Calendar = cal;
        var date1 = cal.ToDateTime(2,1,1,0,0,0,0,JapaneseCalendar.CurrentEra);
        Console.WriteLine($"Japanese calendar date: {date1.ToString("D", jaJp)}, " +
                          $"Gregorian calendar date: {date1.ToString("D", CultureInfo.InvariantCulture)}");

        var date2 = cal.ToDateTime(6,11,7,0,0,0,0,GetEraIndex("大正"));
        Console.WriteLine($"Japanese calendar date: {date2.ToString("D", jaJp)}, " +
                          $"Gregorian calendar date: {date2.ToString("D", CultureInfo.InvariantCulture)}");

        int GetEraIndex(string eraName)
        {
           foreach (var ctr in cal.Eras)
              if (jaJp.DateTimeFormat.GetEraName(ctr) == eraName)
                 return ctr;

           return 0; 
        }
    }
}
// The example displays the following output:
//   Japanese calendar date: 平成2年1月1日, Gregorian calendar date: Monday, 01 January 1990
//   Japanese calendar date: 大正6年11月7日, Gregorian calendar date: Wednesday, 07 November 1917
Imports System.Globalization

Module Program
    Dim cal As Calendar
    Dim jaJp As CultureInfo
    
    Public Sub Main()
        cal = New JapaneseCalendar()
        jaJp = New CultureInfo("ja-JP")
        jaJp.DateTimeFormat.Calendar = cal
        Dim date1 = cal.ToDateTime(2,1,1,0,0,0,0,JapaneseCalendar.CurrentEra)
        Console.WriteLine($"Japanese calendar date: {date1.ToString("D", jaJp)}, " +
                          $"Gregorian calendar date: {date1.ToString("D", CultureInfo.InvariantCulture)}")

        Dim date2 = cal.ToDateTime(6,11,7,0,0,0,0,GetEraIndex("大正"))
        Console.WriteLine($"Japanese calendar date: {date2.ToString("D", jaJp)}, " +
                          $"Gregorian calendar date: {date2.ToString("D", CultureInfo.InvariantCulture)}")
    End Sub

    Private Function GetEraIndex(eraName As String) As Integer
        For Each ctr in cal.Eras
            If jaJp.DateTimeFormat.GetEraName(ctr) = eraName Then Return ctr
        Next

        Return 0 
    End Function
End Module
' The example displays the following output:
'   Japanese calendar date: 平成2年1月1日, Gregorian calendar date: Monday, 01 January 1990
'   Japanese calendar date: 大正6年11月7日, Gregorian calendar date: Wednesday, 07 November 1917

Комментарии

Этот ToDateTime метод полезен, так как он может преобразовать любую дату в текущем календаре в дату григорианского календаря. Затем можно использовать грегорианскую дату, например для сравнения дат в разных календарях или создания эквивалентной даты в определенном календаре.

Поскольку поддерживает JapaneseCalendar несколько эпох, основанных на царстве императора, вы всегда должны вызывать этот метод и явно указывать эру, чтобы избежать непреднамеренных дат и сделать намерение вашего кода ясным. В примере показано, как создать экземпляр даты, которая всегда находится в текущей эре и той, которая принадлежит указанной эре.

Применяется к

См. также раздел