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 小于 0 或大于 23。

- 或 -

minute 小于 0 或大于 59。

- 或 -

second 小于 0 或大于 59。

- 或 -

millisecond 小于 0 或大于 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由于 支持基于皇帝统治的多个纪元,因此应始终调用此方法并显式指定纪元,以避免意外日期并明确代码的意图。 该示例演示如何实例化始终位于当前纪元中的日期和属于指定纪元的日期。

适用于

另请参阅