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

设置为当前纪元中指定日期和时间的 DateTime

例外

year 超出了日历支持的范围。

  • 或 - month 超出了日历支持的范围。

  • 或 - day 超出了日历支持的范围。

  • 或 - hour 小于 0 或大于 23。

  • 或 - minute 小于 0 或大于 59。

  • 或 - second 小于 0 或大于 59。

  • 或 - millisecond 小于 0 或大于 999。

  • 或 - era 超出了日历支持的范围。

示例

以下示例实例化两个日期。 第一个始终是当前时代第二年的第一天,而第二天则标识了大正时代的特定一天。 该示例的输出是用海西时代作为当前时代生成的。

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

适用于

另请参阅