以hh:mm格式显示波斯时间
本文关键字:时间 显示 格式 hh mm | 更新日期: 2023-09-27 18:27:46
我在我的应用程序上使用的是波斯日历,我使用的代码是:
using System.Globalization;
[...]
PersianCalendar pc = new PersianCalendar();
DateTime thistime = DateTime.Now;
string persiantimenow = pc.GetHour(thistime) + ":" + pc.GetMinute(thistime);
Console.WriteLine(persiantimenow);
现在是12:35AM,所以输出是: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");
理想情况下,您应该使用DateTimeFormatInfo
,它的Calendar
属性设置为PersianCalendar
。然而,从文档来看:
应用程序不应将PersianCalendar对象用作区域性的默认日历。默认日历由CultureInfo.calendar属性指定,并且必须是CultureInfo.OptionsCalendars属性返回的日历之一。目前,PersianCalendar类不是CultureInfo类支持的任何区域性的可选日历,因此不能是默认日历。
这使得它很难在不篡改的情况下使用,基本上:(
不过,对于小时/分钟来说,日历真的重要吗?我很清楚,不同的日历对不同的日期的处理方式不同,但对时间是否不同?对于时间域,你能不能不使用不变的文化?
time.Text = DateTime.Now.ToString("h:mm tt", CultureInfo.InvariantCulture);
time.Text = time.Text.Replace("AM", "صبح");
time.Text = time.Text.Replace("PM", "عصر");