代码之家  ›  专栏  ›  技术社区  ›  Michael Kniskern

从字符串C分析小时和AM/PM值#

  •  2
  • Michael Kniskern  · 技术社区  · 15 年前

    从字符串格式(如C_中的“9:00 pm”)分析小时和AM/PM值的最有效方法是什么?

    Pseudocode:

    string input = "9:00 PM";
    
    //use algorithm
    
    //end result
    int hour = 9;
    string AMPM = "PM";
    
    5 回复  |  直到 14 年前
        1
  •  8
  •   Michael Kniskern    14 年前

    试试这个:

    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
  •  2
  •   Rubens Farias    15 年前

    试试这个:

    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
  •  2
  •   Rex M    15 年前
    string input = "9:00 PM";
    DateTime dt = DateTime.Parse(input);
    
    int hour = int.Parse(dt.ToString("hh"));
    string AMPM = dt.ToString("tt");
    

    Custom Date and Time Format Strings 用于从各种格式的日期时间值获取信息。

        4
  •  1
  •   shf301    15 年前

    使用日期时间。分析:

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

    编辑 :由于在上午12点失败,已在小时内删除了%12。

        5
  •  0
  •   Steven A. Lowe    15 年前

    开始伪代码:

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

    端伪码