【问题标题】:Converting string "7.30" to time format hh:mm将字符串“7.30”转换为时间格式 hh:mm
【发布时间】:2021-08-31 21:08:35
【问题描述】:

我想将字符串转换为日期时间或时间跨度。我的字符串像这样“7.30”,我需要在 c# 中获得两次差异。我尝试了很多方法,但问题没有解决。

【问题讨论】:

标签: c# string datetime converters


【解决方案1】:

date 部分重要吗?无论如何,如果您真的只需要将其转换为时间而不关心日期部分,您可以这样做:

using System;
using System.Globalization;
                    
public class Program
{
    public static void Main()
    {
        string inVal = "7.30";
        var x = DateTime.ParseExact(inVal, "H.mm", CultureInfo.InvariantCulture);
        Console.WriteLine(x);
    }
}

输出:

2021 年 6 月 16 日上午 7:30:00

此外,您应该查看 Microsoft 的自定义日期和时间格式,以确保您拥有最适合您的用例的格式: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

【讨论】:

    【解决方案2】:

    建议使用 DateTime.TryParseExact 进行 DateTime 转换,方法是指定 DateTime 字符串模式、Culture InfoDateTimeStyles

    这将帮助您确定解析后的字符串是否与要转换的 DateTime 字符串模式匹配。接下来,您可以实现自定义逻辑来处理错误的转换。

    根据您提供的 DateTime 字符串,我假设它是这种模式(基于 24 小时):

    H.mm
    

    解决办法如下:

    using System;
    using System.Globalization;
                        
    public class Program
    {
        public static void Main()
        {
            DateTime dateTime;
            bool isValidDateTime = DateTime.TryParseExact("7.30", "H.mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime);
            
            if (!isValidDateTime)
            {
                // TO-DO Handling for wrong time format
                return;
            }
            
            Console.WriteLine(dateTime.ToString("hh:mm"));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 2018-06-07
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多