Отображение персидского времени в формате чч: мм - PullRequest
1 голос
/ 13 марта 2012

Я использую персидский календарь в своем приложении, я использую этот код:

using System.Globalization;

[...]

PersianCalendar pc = new PersianCalendar();
DateTime thistime = DateTime.Now;
string persiantimenow = pc.GetHour(thistime) + ":" + pc.GetMinute(thistime);

Console.WriteLine(persiantimenow);

Сейчас 12:35, поэтому вывод: 0:33, но я хочу, чтобы он был00: 33

Я пытался использовать:

string persiantimenow = pc.GetHour(thistime.ToString("hh")) + ":" + pc.GetMinute(thistime.ToString("mm"));

Это дало мне ошибку, поэтому я использовал следующий, но также выдало ту же ошибку

string thistime_Hour = thistime.ToString("HH");
string thistime_minute = thistime.ToString("MM");

string persiantimenow = pc.GetHour(thistime_Hour) + ":" + pc.GetMinut(thistime_minute);

Но я получаюОшибка:

Argument 1: cannot convert from 'string' to 'System.DateTime'

РЕДАКТИРОВАТЬ 1 [Я нашел хитрое решение]

if (pc.GetHour(thistime) < 12)
{
     string persiantimenow = "0" + pc.GetHour(thistime) + ":" + pc.GetMinute(thistime);
     Console.WriteLine(persiantimenow);
}

Это не то, что мне нужно, но это решает проблему.

РЕДАКТИРОВАТЬ 2[LB решил это для меня] Вот решение:

string persiantimenow = pc.GetHour(thistime).ToString("00") + ":" + pc.GetMinute(thistime).ToString("00");

Ответы [ 2 ]

1 голос
/ 13 марта 2012

В идеале вы должны использовать DateTimeFormatInfo, у которого для свойства Calendar установлено значение PersianCalendar.Однако из документов :

Ваше приложение не должно использовать объект PersianCalendar в качестве календаря по умолчанию для культуры.Календарь по умолчанию указывается свойством CultureInfo.Calendar и должен быть одним из календарей, возвращаемых свойством CultureInfo.OptionalCalendars.В настоящее время класс PersianCalendar не является необязательным календарем для какой-либо культуры, поддерживаемой классом CultureInfo, и, следовательно, не может быть календарем по умолчанию.

Это затрудняет использование без фальсификации, в основном: (

Хотя для часа / минуты действительно ли важен календарь? Я прекрасно понимаю, что разные календари по-разному относятся к разным датам , но по-разному ли они раз ?Вы не просто используете инвариантную культуру для временных полей?

0 голосов
/ 28 июня 2014
 time.Text = DateTime.Now.ToString("h:mm tt", CultureInfo.InvariantCulture);

        time.Text = time.Text.Replace("AM", "صبح");
        time.Text = time.Text.Replace("PM", "عصر");
...