2

C# で "9:00 PM" のような文字列形式から時間と AM/PM の値を解析する最も効果的な方法は何でしょうか?

擬似コード:

string input = "9:00 PM";

//use algorithm

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

5 に答える 5

8

これを試して:

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";
于 2010-02-10T01:01:45.273 に答える
3

これを試して:

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");
}
于 2010-02-10T01:32:40.937 に答える
2
string input = "9:00 PM";
DateTime dt = DateTime.Parse(input);

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

あらゆる種類の形式で DateTime 値から情報を取得するには、カスタムの日付と時刻の形式文字列を参照してください。

于 2010-02-10T01:02:56.970 に答える
1

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 を削除しました。

于 2010-02-10T01:02:06.453 に答える
0

疑似コードを開始します:

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

疑似コードを終了

于 2010-02-10T01:02:30.920 に答える