问题:将12小时时钟转换为24小时,然后将其反转

时间:2015-10-05 01:11:49

标签: c# datetime

我是一名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) 我不太清楚该怎么做。 谁能帮我?非常感谢!!

2 个答案:

答案 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);