【问题标题】:Convert AM/PM time to 24 hours format?将上午/下午时间转换为 24 小时格式?
【发布时间】:2012-01-10 09:04:55
【问题描述】:

我需要将 12 小时格式时间 (am/pm) 转换为 24 小时格式时间,例如01:00 PM 到 13:00 使用 C#。如何转换?

【问题讨论】:

  • 源数据的格式是什么?
  • 格式的类型是什么?你想输入字符串还是日期时间?
  • @phoog 格式为 h:mm tt
  • DateTime 没有格式之类的东西。它仅在您使用ToString 时应用,string 类型的变量也是如此?
  • @nmathur 是字符串还是 DateTime 值?

标签: c# datetime


【解决方案1】:

如果您需要将字符串转换为 DateTime,您可以尝试

DateTime dt = DateTime.Parse("01:00 PM"); // No error checking

或(带错误检查)

DateTime dt;
bool res = DateTime.TryParse("01:00 PM", out dt);

变量dt 包含您的日期时间,因此您可以编写它

dt.ToString("HH:mm");

最后一个适用于您拥有的每个 DateTime 变量,因此如果您还有一个 DateTime,您可以这样写出来。

【讨论】:

  • 对于最后一个:没有重载方法 ToString 接受一个参数
【解决方案2】:

你会想熟悉Custom Date and Time Format Strings

DateTime localTime = DateTime.Now;

// 24 hour format -- use 'H' or 'HH'
string timeString24Hour = localTime.ToString("HH:mm", CultureInfo.CurrentCulture);

【讨论】:

    【解决方案3】:

    将字符串转换为日期时间,你可以试试

        DateTime timeValue = Convert.ToDateTime("01:00 PM");
        Console.WriteLine(timeValue.ToString("HH:mm"));
    

    【讨论】:

    • 这个答案也可以转换 Nullable 格式..不错..
    【解决方案4】:
    int hour = your hour value;
    int min = your minute value;
    String ampm = your am/pm value;
    
    hour = ampm == "AM" ? hour : (hour % 12) + 12; //convert 12-hour time to 24-hour
    
    var dateTime = new DateTime(0,0,0, hour, min, 0);
    var timeString = dateTime.ToString("HH:mm");
    

    【讨论】:

    • 对于 AM,应该是 (hour % 12)
    【解决方案5】:

    通过以下代码将日期时间从 12 小时转换为 24 小时。

    string currentDateString = DateTime.Now.ToString("dd-MMM-yyyy h:mm tt");
    DateTime currentDate = Convert.ToDateTime(currentDateString);
    Console.WriteLine("String Current Date: " + currentDateString);
    Console.WriteLine("Converted Date: " + currentDate.ToString("dd-MMM-yyyy HH:mm"));
    

    无论何时,都应使用“HH”格式以 24 小时显示时间

    您可以参考以下链接了解更多详情: Custom Date and Time Format Strings

    【讨论】:

      【解决方案6】:

      你可以这样使用:

      string date = "";
      
      date = DateTime.ParseExact("01:00 PM" , "h:mm tt", CultureInfo.InvariantCulture).ToString("HH:mm");
      

      小时:12 小时

      毫米:分钟

      tt:下午/上午

      HH:24 小时

      【讨论】:

        【解决方案7】:
        using System;
        
        class Solution
        {
            static string timeConversion(string s)
            {
                return DateTime.Parse(s).ToString("HH:mm");
            }
        
            static void Main(string[] args)
            {
                Console.WriteLine(timeConversion("01:00 PM"));
                Console.Read();
            }
        }
        

        【讨论】:

          【解决方案8】:

          您可以使用ParseExact() 方法获取DateTime 对象。然后,您可以使用该 DateTime 对象的 ToString() 方法将字符串转换为您需要的任何内容,如 here 所示。

          【讨论】:

            【解决方案9】:
            using System;
            
            public class Program
            {
                public static string ConvertFrom12To24HoursFormat(string inputTime)
                {
                    return DateTime.Parse(inputTime).ToString("hh:mm");
                }
            
                public static void Main(string[] args)
                {
                    Console.WriteLine(ConvertFrom12To24HoursFormat("01:05 pm"));
                }
            }
            

            【讨论】:

              【解决方案10】:

              您可以使用 Cultures 来解析和格式化您的字符串,例如

              var cultureSource = new CultureInfo("en-US", false);
              var cultureDest = new CultureInfo("de-DE", false);
              
              var source = "01:00 pm";
              
              var dt = DateTime.Parse(source, cultureSource);
              Console.WriteLine(dt.ToString("t", cultureDest));
              

              这打印13:00

              【讨论】:

                猜你喜欢
                • 2015-06-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-12-03
                • 2012-02-23
                • 2020-06-30
                相关资源
                最近更新 更多