将数据库24小时时钟转换为12小时时钟

本文关键字:时钟 12小时 转换 24小时 数据库 | 更新日期: 2023-09-27 18:16:03

我在MVP写一个web应用程序。我遇到的一个问题是,我不知道如何将数据库中的24小时转换为网页上的12小时时钟。思路如下:用户输入12小时时钟,但数据库将其保存为24小时时钟。当用户点击一条记录时,数据库中的时间需要在12小时内转换回来,并显示在网页上。有三个下拉框(小时,分钟,上午/下午)。我有12小时的时钟到24小时的时钟部分。谁能帮我把24小时的时钟转到12小时的时钟部分?我不知道如何返回20:00:00到8:00 PM,并将每个值设置为三个下拉框。下面是我当前的代码:

 public string sunOpenTime
    {
        get //Convert 12hr clock to 24 clock
        {
            int hours = 0;
            int mins = 0;
            hours = Convert.ToInt32(ddlSundayOpenTimeHr.Text);
            mins = Convert.ToInt32(ddlSundayOpenTimeMin.Text);
            TimeSpan ts;
            if (ddlSundayFrom.SelectedValue == "PM")
            {
                ts = new TimeSpan(hours + 12, mins, 0);
            }
            else
            {
                ts = new TimeSpan(hours, mins, 0);
            }
            return ts.ToString();
        }
        set // Not really sure what to do here
        {
            sunOpenTime = value; //SunOpenTime is made by two parts: ddlSundayOpenTimeHr.Text + ddlSundayOpenTimeMin.Text;
        }
    }

对于AM/PM下拉菜单:

public string ddSundayFrom
    {
        if ... // something should be added here to decide if the value is PM or AM
        ddSundayFrom = 'PM';
        else
        ddSundayFrom = 'AM';
    }

任何帮助或想法将不胜感激。非常感谢!

将数据库24小时时钟转换为12小时时钟

我只是想说清楚这一点。在。net中,DateTime表示时间上的一个瞬间。它以一种特定的方式存储在内存中,为用户提供信息的用户界面可以以多种不同的方式显示它。就像如果有人问你时间,你可能会对他们说"现在是14点",或者你可能会说"现在是下午2点",或者你可能会说"三点过一刻"。你可以用不同的方法回答这个问题。

同样,你的用户界面可以采用DateTime结构并以多种不同的方式显示它:

DateTime myDate = new DateTime(2015, 10, 5, 17, 30, 00);
string twelveHour = myDate.ToString("h:mm tt"); // 5:30 PM
string twentyFourHour = myDate.ToString("HH:mm"); // 17:30

你可以在这里看到更多的例子。从这里带走的事情是,您没有"转换"DateTime结构。您正在做的是基于DateTime以特定格式组合字符串。

使用DateTime结构。其他人已经要求过类似的东西了:)

如果时间值作为time, datedatetime存储在数据库中,您可以将其读入DateTime并使用字符串格式化来确定它将如何显示。

string timeStr = timevalue.ToString("h:mm tt");

以上格式字符串中,h为1位或2位12小时时间的小时部分,mm为分钟,tt为大写的AMPM值。如果你想把它拆分成MVC页面的几个部分你可以这样做:

string[] timeParts = timevalue.ToString("h:mm tt").Split(':', ' ').ToArray();

这将给你一个包含三个部分的数组:小时、分钟和AM/PM。然后可以将它们加载到web表单的适当部分。

比自己做数字体操简单多了

你可以比较一个值是否更大

String meridiem = (hours > 0 && hours < 13) ? "AM" : "PM";

然后用模算子求出12小时时间:

int hours12 = (hours > 0 && hours < 13) ? hours % 13 : hours - 12;