Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 问题:将12小时时钟转换为24小时,然后将其反转回来_C#_Datetime - Fatal编程技术网

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

C# 问题:将12小时时钟转换为24小时,然后将其反转回来,c#,datetime,C#,Datetime,我是初学者。我正在用MVP编写一个web应用程序,在将12小时时钟转换为24小时时钟时遇到了问题。 因此,有三个下拉框(小时、分钟、上午/下午) 当AM/PM下拉列表显示为PM时,小时值应加12。这是我的代码,但有点不对劲 public string sunOpenTime { get { if (ddlSundayFrom.SelectedValue == "PM") return sunOpenTime = (ddlSundayOpen

我是初学者。我正在用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) 我不知道该怎么做。
有人能帮我吗?非常感谢

下面是一个代码示例,说明了如果时间为PM,如何将时间转换为24小时格式。 您可以做相反的操作,即按照下面的示例中类似的行从24小时格式转换为12小时格式&因此,这就留给您了。如果你在那里需要帮助,请告诉我

代码示例:12小时到24小时

备注:用于格式化时间字符串的链接是

编辑1:


<>你可以考虑将转换代码(12小时到24小时)从吸气剂移到一个函数或任何适合你的代码块。本质上,我只是试图传达从12小时到24小时的转换方法。

你可以做一些简单的数学来转换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);
//24小时到12小时
整数小时12=(小时24+11)%12+1;
字符串meridiem=小时24<12?“AM”:“PM”;
//12小时到24小时
整小时24=梅里迪姆=“上午”
? (12小时=12?0:12小时)
:(hours12==12?12:hours12+12);

我想这个错误在这里很明显,是因为你的时间,然后你加了分钟?12小时+10分钟将变为22。。。另一件事是,如果我选择12点,它将变成(12+12)变成24+分钟。。还有一个错误,我想你还没有把它转换成整数,做一个加号,我认为它不起作用。如果selectedValue不等于“PM”(我指的是else块),我认为有一个小错误:)因为,If和else块是一样的…@KemalKefeli:Copy-paste会引起如此微妙的错误。谢谢你的指点@谢谢你!我跟随你的方式,使用时间跨度。现在看来这是可行的。非常感谢你!
// 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);