我是一名c#初学者。我正在MVP中编写一个Web应用程序,并且无法将12小时时钟转换为24小时制。 所以,有三个下拉框(小时,分钟,上午/下午) 当AM / PM下拉列表显示为PM时,小时值应该加12。这是我的代码,但那里有问题。
public string sunOpenTime
{
get
{
if (ddlSundayFrom.SelectedValue == "PM")
return sunOpenTime = (ddlSundayOpenTimeHr.Text += 12) + ddlSundayOpenTimeMin.Text;
else
return sunOpenTime = ddlSundayOpenTimeHr.Text + ddlSundayOpenTimeMin.Text;
}
set
{
sunOpenTime = value;
}
}
我的另一个问题是,当用户点击现有记录时,PM / AM下拉列表应该在网页上正确显示。 (如果数据库中的记录是18:00,则应该是网页上的下午6:00) 我不太清楚该怎么做。 谁能帮我?非常感谢!!
答案 0 :(得分:2)
以下是如果时间在PM中,您可以将时间转换为24小时格式的代码示例。 你可以反过来,即从24小时格式转换为12小时格式,类似于下面的示例和&因此请留给你。如果您需要任何帮助,请告诉我。
代码示例:12小时至24小时
public string sunOpenTime
{
get
{
int hours = 0;
int mins = 0;
if (int.TryParse(ddlSundayOpenTimeHr.Text, hours) && int.TryParse(ddlSundayOpenTimeHr.Text, mins))
{
TimeSpan ts;
if (ddlSundayFrom.SelectedValue == "PM")
{
ts = new TimeSpan(hours + 12, mins, 0);
}
else
{
ts = new TimeSpan(hours, mins, 0);
}
return ts.ToString();//There are numerous ways to format the time string, check link below.
}
else
{
return "Invalid Time";//Indicatory msg - Handle it the way you want.
}
}
set
{
sunOpenTime = value;
}
}
P.S:格式化时间字符串的链接是here
编辑1:
您可以考虑将转换代码(12小时到24小时)从getter移动到适合您的函数或任何代码块。实质上,我试图仅将转换方法从12小时传达到24小时。
答案 1 :(得分:1)
你可以做一些简单的数学计算,在24小时制和12小时制小时之间进行转换。
// 24-hour clock to 12-hour clock
int hours12 = (hours24 + 11) % 12 + 1;
string meridiem = hours24 < 12 ? "AM" : "PM";
// 12-hour clock to 24-hour clock
int hours24 = meridiem == "AM"
? (hours12 == 12 ? 0 : hours12)
: (hours12 == 12 ? 12 : hours12 + 12);