Compartilhar via


JapaneseCalendar.ToDateTime Método

Definição

Retorna um DateTime, que é definido como a data e hora especificadas na era especificada.

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

Parâmetros

year
Int32

Um inteiro que representa o ano.

month
Int32

Um inteiro de 1 a 12 que representa o mês.

day
Int32

Um inteiro de 1 a 31 que representa o dia.

hour
Int32

Um inteiro de 0 a 23 que representa a hora.

minute
Int32

Um inteiro de 0 a 59 que representa o minuto.

second
Int32

Um inteiro de 0 a 59 que representa o segundo.

millisecond
Int32

Um inteiro de 0 a 999 que representa o milissegundo.

era
Int32

Um inteiro que representa a era.

Retornos

O DateTime que é definido como a data e hora especificadas na era atual.

Exceções

year está fora do intervalo com suporte do calendário.

- ou -

month está fora do intervalo com suporte do calendário.

- ou -

day está fora do intervalo com suporte do calendário.

- ou -

hour é menor que zero ou maior que 23.

- ou -

minute é menor que zero ou maior que 59.

- ou -

second é menor que zero ou maior que 59.

- ou -

millisecond é menor que zero ou maior que 999.

- ou -

era está fora do intervalo com suporte do calendário.

Exemplos

O exemplo a seguir cria uma instância de duas datas. O primeiro é sempre o primeiro dia do segundo ano na era atual, enquanto o segundo identifica um dia específico na era Taisho. A saída do exemplo foi produzida com a era Heisei como a era atual.

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

Comentários

O ToDateTime método é útil porque pode converter qualquer data no calendário atual em uma data de calendário gregoriano. A data gregoriana pode ser usada posteriormente, por exemplo, para comparar datas em calendários diferentes ou criar uma data equivalente em um calendário específico.

Como o dá suporte a JapaneseCalendar várias eras com base no reinado do imperador, você sempre deve chamar esse método e especificar explicitamente uma era para evitar uma data não intencional e para tornar clara a intenção do seu código. O exemplo mostra como instanciar uma data que está sempre na era atual e que pertence a uma era especificada.

Aplica-se a

Confira também