我在我的应用程序上使用波斯日历,我正在使用该代码:
using System.Globalization;
[...]
PersianCalendar pc = new PersianCalendar();
DateTime thistime = DateTime.Now;
string persiantimenow = pc.GetHour(thistime) + ":" + pc.GetMinute(thistime);
Console.WriteLine(persiantimenow);
现在是12:35 AM,所以输出为: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 [L.B为我解决了] 这是解决方案:
string persiantimenow = pc.GetHour(thistime).ToString("00") + ":" + pc.GetMinute(thistime).ToString("00");
答案 0 :(得分:1)
理想情况下,您使用的DateTimeFormatInfo
Calendar
属性设置为PersianCalendar
。但是,来自docs:
您的应用程序不应将PersianCalendar对象用作文化的默认日历。默认日历由CultureInfo.Calendar属性指定,并且必须是CultureInfo.OptionalCalendars属性返回的日历之一。目前,PersianCalendar类不是CultureInfo类支持的任何文化的可选日历,因此不能是默认日历。
这使得它很难在没有捏造的情况下使用,基本上是:(
虽然小时/分钟,日历真的重要吗?我非常清楚不同的日历会以不同的方式处理不同的日期,但他们会以不同的方式处理次吗?你能不能只使用不变的文化,时间领域?
答案 1 :(得分:0)
time.Text = DateTime.Now.ToString("h:mm tt", CultureInfo.InvariantCulture);
time.Text = time.Text.Replace("AM", "صبح");
time.Text = time.Text.Replace("PM", "عصر");