Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una aplicación globalizada debe poder mostrar y utilizar calendarios basados en la referencia cultural actual. .NET Framework proporciona la clase Calendar así como las siguientes implementaciones de Calendar: GregorianCalendar, HebrewCalendar, HijriCalendar, JapaneseCalendar, JulianCalendar, KoreanCalendar, TaiwanCalendar y ThaiBuddhistCalendar.
La clase CultureInfo tiene una propiedad CultureInfo.Calendar que especifica el calendario predeterminado para una referencia cultural. Algunas referencias culturales admiten más de un calendario. La propiedad CultureInfo.OptionalCalendars especifica los calendarios opcionales admitidos por una referencia cultural.
En el ejemplo de código siguiente se crean objetos CultureInfo para las referencias culturales "th-TH" (tailandés de Tailandia) y "ja-JP" (japonés de Japón), y muestra los calendarios predeterminados y opcionales para cada referencia cultural. Tenga en cuenta que GregorianCalendar se divide a su vez en subtipos. La propiedad GregorianCalendar.CalendarType especifica el subtipo de calendario gregoriano. En este ejemplo, cada vez que se determina que el calendario es gregoriano, se recupera y se muestra el valor CalendarType. Para obtener una lista y una explicación de los posibles valores de CalendarType, vea GregorianCalendarTypes (Enumeración).
Imports System
Imports System.Globalization
Imports Microsoft.VisualBasic
Public Class TestClass
Public Shared Sub Main()
' Creates a CultureInfo for Thai in Thailand.
Dim th As New CultureInfo("th-TH")
DisplayCalendars(th)
' Creates a CultureInfo for Japanese in Japan.
Dim ja As New CultureInfo("ja-JP")
DisplayCalendars(ja)
End Sub
Protected Shared Sub DisplayCalendars(cultureinfo As CultureInfo)
Dim ci As New CultureInfo(cultureinfo.ToString())
' Displays the default calendar for the culture.
If TypeOf ci.Calendar Is GregorianCalendar Then
Console.WriteLine(ControlChars.Newline + ControlChars.Newline + _
"The default calendar for the {0} culture is:" + _
ControlChars.Newline + " {1}" + ControlChars.Newline + _
ControlChars.Newline, ci.DisplayName.ToString(), _
ci.Calendar.ToString() + " subtype" + CType(ci.Calendar, _
GregorianCalendar).CalendarType.ToString())
Else
Console.WriteLine(ControlChars.Newline + ControlChars.Newline + _
"The default calendar for the {0} culture is:" + _
ControlChars.Newline + "{1}" + ControlChars.Newline + _
ControlChars.Newline, ci.DisplayName.ToString(),_
ci.Calendar.ToString())
End If
' Displays the optional calendars for the culture.
Console.WriteLine("The optional calendars for the {0} culture are: _
", ci.DisplayName.ToString())
Dim i As Integer
For i = ci.OptionalCalendars.GetLowerBound(0) To _
ci.OptionalCalendars.GetUpperBound(0)
If TypeOf ci.OptionalCalendars(i) Is GregorianCalendar Then
' Displays the calendar subtype.
Dim CalStr As [String] = ci.OptionalCalendars(i).ToString() _
+ " subtype " + CType(ci.OptionalCalendars(i), _
GregorianCalendar).CalendarType.ToString()
Console.WriteLine(CalStr)
Else
Console.WriteLine(ci.OptionalCalendars(i).ToString())
End If
Next i
End Sub
End Class
using System;
using System.Globalization;
public class TestClass
{
public static void Main()
{
// Creates a CultureInfo for Thai in Thailand.
CultureInfo th= new CultureInfo("th-TH");
DisplayCalendars(th);
// Creates a CultureInfo for Japanese in Japan.
CultureInfo ja= new CultureInfo("ja-JP");
DisplayCalendars(ja);
}
protected static void DisplayCalendars(CultureInfo cultureinfo)
{
CultureInfo ci = new CultureInfo(cultureinfo.ToString());
// Displays the default calendar for the culture.
if (ci.Calendar is GregorianCalendar)
Console.WriteLine ("\n\nThe default calendar for the {0} culture
is:\n {1}\n\n", ci.DisplayName.ToString(),
ci.Calendar.ToString() + " subtype " +
((GregorianCalendar)ci.Calendar).CalendarType.ToString());
else
Console.WriteLine ("\n\nThe default calendar for the {0} culture
is: \n{1}\n\n", ci.DisplayName.ToString(),
ci.Calendar.ToString());
// Displays the optional calendars for the culture.
Console.WriteLine ("The optional calendars for the {0} culture are:
", ci.DisplayName.ToString());
for (int i = ci.OptionalCalendars.GetLowerBound(0); i <=
ci.OptionalCalendars.GetUpperBound(0); i++ )
{
if (ci.OptionalCalendars[i] is GregorianCalendar)
{
// Displays the calendar subtype.
String CalStr = (ci.OptionalCalendars[i].ToString() + "
subtype " + ((GregorianCalendar)ci.OptionalCalendars[i]).CalendarType.ToString());
Console.WriteLine(CalStr);
}
else
Console.WriteLine (ci.OptionalCalendars[i].ToString());
}
}
}
Este código genera el resultado siguiente:
The default calendar for the Thai (Thailand) culture is:
System.Globalization.ThaiBuddhistCalendar
The optional calendars for the Thai (Thailand) culture are:
System.Globalization.ThaiBuddhistCalendar
System.Globalization.GregorianCalendar subtype Localized
The default calendar for the Japanese (Japan) culture is:
System.Globalization.GregorianCalendar subtype Localized
The optional calendars for the Japanese (Japan) culture are:
System.Globalization.JapaneseCalendar
System.Globalization.GregorianCalendar subtype USEnglish
System.Globalization.GregorianCalendar subtype Localized
En el ejemplo de código siguiente se muestra cómo los métodos similares de la estructura DateTime y de la clase Calendar pueden devolver resultados diferentes para la misma referencia cultural. CurrentCulture se establece como "he-IL" (hebreo de Israel) y el calendario actual se establece como HebrewCalendar. Se crea e inicializa una estructura DateTime. A continuación, se utilizan miembros de DateTime y de Calendar para devolver el día, mes, año y número de meses del año, y se muestran esos valores. Sólo los métodos de la clase Calendar devuelven el día, mes, año y número de meses del año en función del calendario hebreo. Los métodos de DateTime siempre utilizan el calendario gregoriano para realizar los cálculos, sin tener en cuenta el calendario actual.
Imports System
Imports System.Threading
Imports System.Globalization
Imports Microsoft.VisualBasic
Public Class TestClass
Public Shared Sub Main()
' Creates a CultureInfo for Hebrew in Israel.
Dim he As New CultureInfo("he-IL")
he.DateTimeFormat.Calendar = New HebrewCalendar()
Console.WriteLine(ControlChars.Newline + ControlChars.Newline _
+ "The current calendar set for the {0} culture is:" + _
ControlChars.Newline + " {1}", he.DisplayName.ToString(), _
he.DateTimeFormat.Calendar.ToString())
Dim dt As New DateTime(5760, 11, 4, he.DateTimeFormat.Calendar)
Console.WriteLine(ControlChars.Newline + " The DateTime class _
returns the day as: {0}", dt.Day)
Console.WriteLine(ControlChars.Newline + " The Calendar class _
returns the day as: {0}", _
he.DateTimeFormat.Calendar.GetDayOfMonth(dt))
Console.WriteLine(ControlChars.Newline + " The DateTime class _
returns the month as: {0}", dt.Month)
Console.WriteLine(ControlChars.Newline + " The Calendar class _
returns the month as: {0}", _
he.DateTimeFormat.Calendar.GetMonth(dt))
Console.WriteLine(ControlChars.Newline + " The DateTime class _
returns the Year as: {0}", dt.Year)
Console.WriteLine(ControlChars.Newline + " The Calendar class _
returns the Year as: {0}", _
he.DateTimeFormat.Calendar.GetYear(dt))
Console.WriteLine(ControlChars.Newline + " The Calendar class _
returns the number of months in the year {0} as: {1}", _
he.DateTimeFormat.Calendar.GetYear(dt), _
he.DateTimeFormat.Calendar.GetMonthsInYear _
(he.DateTimeFormat.Calendar.GetYear(dt))
Console.WriteLine(ControlChars.Newline + " The DateTime class does _
not return the number of months in a year " + _
ControlChars.Newline + " because it uses the Gregorian _
calendar, which always has twelve months.")
End Sub
End Class
using System;
using System.Threading;
using System.Globalization;
public class TestClass
{
public static void Main()
{
// Creates a CultureInfo for Hebrew in Israel.
CultureInfo he= new CultureInfo("he-IL");
Thread.CurrentThread.CurrentCulture = he;
he.DateTimeFormat.Calendar = new HebrewCalendar();
Console.WriteLine ("\n\nThe current calendar set for the {0} culture
is:\n {1}", he.DisplayName.ToString(),
he.DateTimeFormat.Calendar.ToString());
DateTime dt = new DateTime(5760, 11, 4, he.DateTimeFormat.Calendar);
Console.WriteLine ("\nThe DateTime class returns the day as: {0}",
dt.Day);
Console.WriteLine ("\nThe Calendar class returns the day as: {0}",
he.DateTimeFormat.Calendar.GetDayOfMonth(dt));
Console.WriteLine ("\nThe DateTime class returns the month as:
{0}", dt.Month);
Console.WriteLine ("\nThe Calendar class returns the month as:
{0}", he.DateTimeFormat.Calendar.GetMonth(dt));
Console.WriteLine ("\nThe DateTime class returns the year as: {0}",
dt.Year);
Console.WriteLine ("\nThe Calendar class returns the year as: {0}",
he.DateTimeFormat.Calendar.GetYear(dt));
Console.WriteLine ("\nThe Calendar class returns the number of
months in the year {0} as:
{1}",he.DateTimeFormat.Calendar.GetYear(dt),
he.DateTimeFormat.Calendar.GetMonthsInYear
(he.DateTimeFormat.Calendar.GetYear(dt)));
Console.WriteLine ("\nThe DateTime class does not return the number
of months in a year \nbecause it uses the Gregorian calendar,
which always has twelve months.");
}
}
Este código genera el resultado siguiente:
The current calendar set for the Hebrew (Israel) culture is:
System.Globalization.HebrewCalendar
The DateTime class returns the day as: 7
The Calendar class returns the day as: 4
The DateTime class returns the month as: 7
The Calendar class returns the month as: 11
The DateTime class returns the year as: 2000
The Calendar class returns the year as: 5760
The Calendar class returns the number of months in the year 5760 as: 13
The DateTime class does not return the number of months in a year
because it uses the Gregorian calendar, which always has twelve months.
En el ejemplo de código siguiente se ilustra la forma en que los valores devueltos para el mes, día y años actuales pueden variar en función del calendario actual establecido para una referencia cultural específica. CurrentCulture se ha establecido como "ja-JP" y el calendario se ha establecido como JapaneseCalendar. Se devuelve y se muestra el día, mes y año. A continuación, el calendario se establece como GregorianCalendar y se devuelve y se muestra el día, mes y año. Observe cómo difiere el año dependiendo del calendario actual. JapaneseCalendar devuelve el año como 13, mientras que GregorianCalendar devuelve el año como 2001.
Imports System
Imports System.Threading
Imports System.Globalization
Imports Microsoft.VisualBasic
Public Class TestClass
Public Shared Sub Main()
Dim dt As DateTime = DateTime.Now
' Creates a CultureInfo for Japanese in Japan.
Dim jp As New CultureInfo("ja-JP")
jp.DateTimeFormat.Calendar = New JapaneseCalendar()
Console.WriteLine(ControlChars.Newline + ControlChars.Newline + _
"The current calendar set for the {0} culture is:" + _
ControlChars.Newline + " {1}", jp.DisplayName.ToString(), _
jp.DateTimeFormat.Calendar.ToString())
Console.WriteLine(ControlChars.Newline + " The day is: {0}", _
jp.DateTimeFormat.Calendar.GetDayOfMonth(dt))
Console.WriteLine(ControlChars.Newline + " The month is: {0}", _
jp.DateTimeFormat.Calendar.GetMonth(dt))
Console.WriteLine(ControlChars.Newline + " The year is: {0}", _
jp.DateTimeFormat.Calendar.GetYear(dt))
jp.DateTimeFormat.Calendar = New GregorianCalendar()
Console.WriteLine(ControlChars.Newline + ControlChars.Newline + _
"The current calendar set for the {0} culture is:" + _
ControlChars.Newline + " {1}", jp.DisplayName.ToString(), _
jp.DateTimeFormat.Calendar.ToString())
Console.WriteLine(ControlChars.Newline + " The day is: {0}", _
jp.DateTimeFormat.Calendar.GetDayOfMonth(dt))
Console.WriteLine(ControlChars.Newline + " The month is: {0}", _
jp.DateTimeFormat.Calendar.GetMonth(dt))
Console.WriteLine(ControlChars.Newline + " The year is: {0}", _
jp.DateTimeFormat.Calendar.GetYear(dt))
End Sub
End Class
using System;
using System.Threading;
using System.Globalization;
public class TestClass
{
public static void Main()
{
DateTime dt = DateTime.Now;
// Creates a CultureInfo for Japanese in Japan.
CultureInfo jp = new CultureInfo("ja-JP");
Thread.CurrentThread.CurrentCulture = jp;
jp.DateTimeFormat.Calendar = new JapaneseCalendar();
Console.WriteLine ("\n\nThe current calendar set for the {0} culture
is:\n {1}", jp.DisplayName.ToString(),
jp.DateTimeFormat.Calendar.ToString());
Console.WriteLine ("\nThe day is: {0}",
jp.DateTimeFormat.Calendar.GetDayOfMonth(dt));
Console.WriteLine ("\nThe month is: {0}",
jp.DateTimeFormat.Calendar.GetMonth(dt));
Console.WriteLine ("\nThe year is: {0}",
jp.DateTimeFormat.Calendar.GetYear(dt));
jp.DateTimeFormat.Calendar = new GregorianCalendar();
Console.WriteLine ("\n\nThe current calendar set for the {0} culture
is:\n {1}", jp.DisplayName.ToString(),
jp.DateTimeFormat.Calendar.ToString());
Console.WriteLine ("\nThe day is: {0}",
jp.DateTimeFormat.Calendar.GetDayOfMonth(dt));
Console.WriteLine ("\nThe month is: {0}",
jp.DateTimeFormat.Calendar.GetMonth(dt));
Console.WriteLine ("\nThe year is: {0}",
jp.DateTimeFormat.Calendar.GetYear(dt));
}
}
Este código genera el resultado siguiente:
The current calendar set for the Japanese (Japan) culture is:
System.Globalization.JapaneseCalendar
The day is: 3
The month is: 8
The year is: 13
The current calendar set for the Japanese (Japan) culture is:
System.Globalization.GregorianCalendar
The day is: 3
The month is: 8
The year is: 2001
Vea también
Referencia
Conceptos
Aplicar formato de fecha y hora para una referencia cultural específica