导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

DateTime 构造函数 (Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

2013/12/13

DateTime 结构的新实例初始化为指定日历的指定年、月、日、小时、分钟、秒和毫秒。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public DateTime(
	int year,
	int month,
	int day,
	int hour,
	int minute,
	int second,
	int millisecond,
	Calendar calendar
)

参数

year
类型: System.Int32
年(1 到 calendar 中的年数)。
month
类型: System.Int32
月(1 到 calendar 中的月数)。
day
类型: System.Int32
日(1 到 month 中的天数)。
hour
类型: System.Int32
小时(0 到 23)。
minute
类型: System.Int32
分(0 到 59)。
second
类型: System.Int32
秒(0 到 59)。
millisecond
类型: System.Int32
毫秒(0 到 999)。
calendar
类型: System.Globalization.Calendar
要用于解释 yearmonthday 的日历。

异常条件
ArgumentNullException

calendarnull

ArgumentOutOfRangeException

year 不在 calendar 所支持的范围内。

- 或 -

month 小于 1 或大于 calendar 中的月数。

- 或 -

day 小于 1 或大于 month 中的天数。

- 或 -

hour 小于 0 或大于 23。

- 或 -

minute 小于 0 或大于 59。

- 或 -

second 小于 0 或大于 59。

- 或 -

millisecond 小于 0 或大于 999。

Kind 属性初始化为 Unspecified

yearmonthday 的允许值取决于 calendar。如果指定的日期和时间不能用 calendar 来表达,将引发异常。

对于很看中时区识别能力的应用程序,如果其时区识别能力有限,则可以使用相应的 DateTimeOffset 构造函数。

System.Globalization 命名空间提供几种日历,其中包括 GregorianCalendarHebrewCalendarHijriCalendarJapaneseCalendar

下面的示例调用 DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) 构造函数,以使用 HijriCalendar 对象实例化 DateTime 值。然后,回历的 DateTime 显示为两种不同方式。由于当前区域性可能不支持回历,因此,将通过对其 HijriCalendar.GetMonthHijriCalendar.GetDayOfMonthHijriCalendar.GetYear 方法进行单独的调用来显示回历日期。然后,此示例将当前区域性更改为阿拉伯语(叙利亚),并将当前区域性的默认日历更改为回历。由于回历目前为当前区域性的默认日历,因此,ToString(String, IFormatProvider) 方法(由 String.Format 方法隐式调用)使用它来格式化日期。当恢复前一个当前区域性(在此情况下为"英语(美国)")时,ToString(String, IFormatProvider) 方法使用当前区域性的默认公历来格式化日期。


using System;
using System.Globalization;
using System.Text.RegularExpressions;
using System.Threading;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Define Hijri calendar.
      HijriCalendar hijri = new HijriCalendar();
      // Define a date using the Hijri calendar.
      DateTime date1 = new DateTime(1431, 9, 9, 16, 32, 18, 500, hijri);

      outputBlock.Text += "Using the Hijri Calendar with the Default Culture:\n";
      outputBlock.Text += date1.ToString("M/dd/yyyy h:mm:ss.fff tt\n");
      outputBlock.Text += String.Format("{0}/{1}/{2} {3}:{4:D2}:{5:D2}.{6:G3}\n\n",
                                        hijri.GetMonth(date1),
                                        hijri.GetDayOfMonth(date1),
                                        hijri.GetYear(date1),
                                        hijri.GetHour(date1),
                                        hijri.GetMinute(date1),
                                        hijri.GetSecond(date1),
                                        hijri.GetMilliseconds(date1));

      // Get current culture so it can later be restored.
      CultureInfo dftCulture = Thread.CurrentThread.CurrentCulture;

      // Define strings for use in composite formatting.
      string dFormat;
      string fmtString;
      // Make ar-SY the current culture and Hijri the current calendar.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("ar-SY");
      CultureInfo current = CultureInfo.CurrentCulture;
      current.DateTimeFormat.Calendar = hijri;
      dFormat = current.DateTimeFormat.ShortDatePattern;
      // Ensure year is displayed as four digits.
      dFormat = Regex.Replace(dFormat, "/yy$", "/yyyy") + " H:mm:ss.fff";
      fmtString = "{0} culture using the {1} calendar: {2:" + dFormat + "}\n";
      outputBlock.Text += String.Format(fmtString, current, GetCalendarName(hijri), date1);

      // Restore previous culture.
      Thread.CurrentThread.CurrentCulture = dftCulture;
      dFormat = DateTimeFormatInfo.CurrentInfo.ShortDatePattern + " H:mm:ss.fff";
      fmtString = "{0} culture using the {1} calendar: {2:" + dFormat + "}\n";
      outputBlock.Text += String.Format(fmtString,
                          CultureInfo.CurrentCulture,
                          GetCalendarName(CultureInfo.CurrentCulture.Calendar),
                          date1);
   }

   private static string GetCalendarName(Calendar cal)
   {
      return Regex.Match(cal.ToString(), "\\.(\\w+)Calendar").Groups[1].Value;
   }
}
// The example displays the following output:
//       8/18/2010 4:32:18.500 PM
//       5/27/1389 16:32:18.500
//       
//       Using the Hijri Calendar:
//       ar-SY culture using the Hijri calendar: 09/09/1431 16:32:18.500
//       en-US culture using the Gregorian calendar: 8/18/2010 16:32:18.500


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2015 Microsoft