什么是解析从字符串格式,如“9:00 PM”小时和AM / PM值在C#中最有效的方法是什么?

伪代码:

string input = "9:00 PM";

//use algorithm

//end result
int hour = 9;
string AMPM = "PM";
有帮助吗?

解决方案

尝试这种情况:

string input = "9:00 PM";

DateTime result;
if (!DateTime.TryParse(input, out result))
{
    // Handle
}

int hour = result.Hour == 0 ? 12 
           : result.Hour <= 12 ? result.Hour 
           : result.Hour - 12;
string AMPM = result.Hour < 12 ? "AM" : "PM";

其他提示

尝试这种情况:

DateTime result;
string input = "9:00 PM";

//use algorithm
if (DateTime.TryParseExact(input, "h:mm tt", 
    CultureInfo.CurrentCulture, 
    DateTimeStyles.None, out result))
{
    //end result
    int hour = result.Hour > 12 ? result.Hour % 12 : result.Hour;
    string AMPM = result.ToString("tt");
}
string input = "9:00 PM";
DateTime dt = DateTime.Parse(input);

int hour = int.Parse(dt.ToString("hh"));
string AMPM = dt.ToString("tt");

请参阅 自定义的日期和时间格式字符串 在所有种格式从DateTime值获得的信息。

使用DateTime.Parse:

string input = "9:00 PM";
DateTime parsed = DateTime.Parse(input);
int hour = int.Parse(dt.ToString("h"));
string AMPM = parsed.ToString("tt");

修改:上移除小时%12由于失败为上午12点

开始伪代码:

 DateTime dt;
 if (!DateTime.TryParse("9:00 AM", out dt))
 {
     //error
 }

端的伪代码

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top