Parse hour and AM/PM value from a string - C#

假装没事ソ 提交于 2019-12-22 12:21:39

问题


What would be the most effective way to parse the hour and AM/PM value from a string format like "9:00 PM" in C#?

Pseudocode:

string input = "9:00 PM";

//use algorithm

//end result
int hour = 9;
string AMPM = "PM";

回答1:


Try this:

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";



回答2:


Try this:

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");
}



回答3:


string input = "9:00 PM";
DateTime dt = DateTime.Parse(input);

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

See Custom Date and Time Format Strings for getting information from a DateTime value in all kinds of formats.




回答4:


Use DateTime.Parse:

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

Edit: Removed %12 on hour since that fails for 12 AM.




回答5:


begin pseudocode:

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

end pseudocode



来源:https://stackoverflow.com/questions/2233691/parse-hour-and-am-pm-value-from-a-string-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!