2012-03-12 2 views
1

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

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' 

EDIT 1 [я понял хитрое решение]

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

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

EDIT 2 [L.B решил это для меня] Вот решение:

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

Где код PersianCalender? мы не можем проверить идеи, если мы не можем проверить код. – MrFox

+0

Вам необходимо импортировать: using System.Globalization; – BOSS

+1

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

ответ

1

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

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

Это делает его трудно использовать без жульничества это, в основном :(

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

+0

Ответ на вопрос« В течение часа/минуты, действительно ли календарь действительно имеет значение? » Да. Например, не все календари имеют один и тот же начальный день: в исламских, бахаи и еврейских календарях день начинается на закате; в еврейском календаре, день начинается на закате. Посмотрите самую прекрасную книгу _Calendrical Calculations_ за увлекательный и информативный взгляд на календари и математику календаря. http://www.amazon.com/Calendrical-Calculations-Nachum-Dershowitz/dp/0521702380/ –

+0

@NicholasCarey: Да, у меня это уже есть, но я думал, что, хотя наблюдательные календари использовались религиозными организациями, для большинства современное деловое и политическое использование, чаще всего использовалось более предсказуемое «дневное начало в полночь». –

+0

@NicholasCarey: (В частности, использование класса 'PersianCalendar' в моем ящике на данный момент не влияет на время ... но оно * влияет на дату.) –

0
time.Text = DateTime.Now.ToString("h:mm tt", CultureInfo.InvariantCulture); 

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

 Смежные вопросы

  • Нет связанных вопросов^_^