Поделиться через


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 Так как поддерживает несколько эпох в зависимости от правления императора, следует всегда вызывать этот метод и явно указывать эру, чтобы избежать непреднамеренных дат и четко определить цель кода. В примере показано, как создать экземпляр даты, которая всегда находится в текущей эре, и дата, принадлежающая указанной эре.

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

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