DateTime
è sempre nel calendario gregoriano, in modo efficace. Anche se si crea un'istanza che specifica un calendario diverso, i valori restituiti dalle proprietà Day
, Month
, Year
ecc. Sono nel calendario gregoriano.
A titolo di esempio, prendere l'inizio del calendario islamico:
using System;
using System.Globalization;
class Test
{
static void Main()
{
DateTime epoch = new DateTime(1, 1, 1, new HijriCalendar());
Console.WriteLine(epoch.Year); // 622
Console.WriteLine(epoch.Month); // 7
Console.WriteLine(epoch.Day); // 18
}
}
Non è chiaro in che modo si sta creando l'ingresso a questo metodo, o se si deve davvero essere convertirlo in una stringa formato. (O perché non si sta usando il built-in formattatori stringa.)
E potrebbe essere che si può semplicemente utilizzare:
public static string FormatDateTimeAsGregorian(DateTime input)
{
return input.ToString("yyyy'/'MM'/'dd' 'HH':'mm':'ss",
CultureInfo.InvariantCulture);
}
che funziona per qualsiasi DateTime
che è stata creata in modo appropriato - ma non sappiamo cosa hai fatto prima.
Esempio:
using System;
using System.Globalization;
class Test
{
static void Main()
{
DateTime epoch = new DateTime(1, 1, 1, new PersianCalendar());
// Prints 0622/03/21 00:00:00
Console.WriteLine(FormatDateTimeAsGregorian(epoch));
}
public static string FormatDateTimeAsGregorian(DateTime input)
{
return input.ToString("yyyy'/'MM'/'dd' 'HH':'mm':'ss",
CultureInfo.InvariantCulture);
}
}
Ora, se siete non specificando il calendario quando si crea il DateTime
, allora non sei davvero la creazione di una data persiano a tutti.
Se volete date che tenere traccia del loro sistema di calendario, è possibile utilizzare il mio progetto Noda Time, che sostiene ora il calendario persiano:
// In Noda Time 2.0 you'd just use CalendarSystem.Persian
var persianDate = new LocalDate(1390, 7, 18, CalendarSystem.GetPersianCalendar());
var gregorianDate = persianDate.WithCalendar(CalendarSystem.Iso);
Intendi dire gregoriano? –
Ho intenzione di assumere quindi, @ Jon. –
@Jon Skeet sì l'ho scritto male scusa –