📜  解析日期时间 c# (1)

📅  最后修改于: 2023-12-03 15:41:35.544000             🧑  作者: Mango

解析日期时间 C#

C# 中的日期时间解析功能可以帮助我们把日期时间字符串转换成 datetime 对象,这样就可以方便地进行日期时间运算和比较。本文将介绍 C# 中常用的日期时间解析方法和格式化字符串。

日期时间解析方法
Parse 方法

Parse 方法是将指定格式的字符串转换为等效的 datetime 对象。它可以接收两个参数:要转换的字符串和一个可选的格式化字符串。如果字符串不符合格式化字符串规定的格式,则会抛出异常。

using System;

class Program {
    static void Main(string[] args) {
        string datetimeString = "2022-01-01 00:00:00";
        DateTime datetime = DateTime.Parse(datetimeString);
        Console.WriteLine(datetime);
    }
}

以上代码会输出 2022/1/1 0:00:00

TryParse 方法

TryParse 方法与 Parse 方法类似,但是它不会抛出异常。如果字符串符合规定格式,则返回 true,并将 datetime 对象赋值给 out 参数;如果字符串不符合规定格式,则返回 false,并将 datetime 对象赋值为 DateTime.MinValue。

using System;

class Program {
    static void Main(string[] args) {
        string datetimeString = "2022-01-01 00:00:00";
        DateTime datetime;
        bool result = DateTime.TryParse(datetimeString, out datetime);
        if (result) {
            Console.WriteLine(datetime);
        } else {
            Console.WriteLine("Invalid datetime string.");
        }
    }
}

以上代码会输出 2022/1/1 0:00:00

格式化字符串

在日期时间解析中,我们可以使用一些符号来表示不同的日期时间元素,例如年、月、日、时、分、秒等。下面是一些常用的符号:

| 符号 | 含义 | 示例 | | -- | -- | -- | | yyyy | 四位数的年份 | 2022 | | MM | 两位数的月份 | 01 | | dd | 两位数的日期 | 01 | | HH | 两位数的小时 | 00 | | mm | 两位数的分钟 | 00 | | ss | 两位数的秒钟 | 00 | | fff | 三位数的毫秒数 | 000 | | zzz | 以加减号为前缀的时区偏移量 | +08:00 |

自定义格式化字符串

除了使用标准的格式字符串之外,还可以自定义格式化字符串。例如:

using System;

class Program {
    static void Main(string[] args) {
        string datetimeString = "2022/1/1 0:0:0.0 +8:00";
        string formatString = "yyyy/M/d H:m:s.fff zzz";
        DateTime datetime = DateTime.ParseExact(datetimeString, formatString, null);
        Console.WriteLine(datetime.ToString("yyyy/MM/dd HH:mm:ss"));
    }
}

以上代码会输出 2022/01/01 00:00:00

标准格式化字符串

.NET Framework 提供了一些标准格式化字符串,可以方便地转换 datetime 对象。以下是一些常用的标准格式化字符串:

| 标准格式字符串 | 描述 | 示例 | | -- | -- | -- | | d | 短日期格式 | 2022/01/01 | | D | 长日期格式 | 2022年1月1日 | | f | 长日期 + 短时间格式 | 2022年1月1日 00:00 | | F | 长日期 + 长时间格式 | 2022年1月1日 00时00分00秒 | | g | 短日期 + 短时间格式 | 2022/01/01 00:00 | | G | 短日期 + 长时间格式 | 2022/01/01 00时00分00秒 | | t | 短时间格式 | 00:00 | | T | 长时间格式 | 00时00分00秒 | | o | ISO 8601 格式 | 2022-01-01T00:00:00.0000000+08:00 | | s | 可排序日期时间格式 | 2022-01-01T00:00:00 |

以下是使用标准格式化字符串的示例:

using System;

class Program {
    static void Main(string[] args) {
        DateTime datetime = DateTime.Now;
        Console.WriteLine(datetime.ToString("d"));
        Console.WriteLine(datetime.ToString("D"));
        Console.WriteLine(datetime.ToString("f"));
        Console.WriteLine(datetime.ToString("F"));
        Console.WriteLine(datetime.ToString("g"));
        Console.WriteLine(datetime.ToString("G"));
        Console.WriteLine(datetime.ToString("t"));
        Console.WriteLine(datetime.ToString("T"));
        Console.WriteLine(datetime.ToString("o"));
        Console.WriteLine(datetime.ToString("s"));
    }
}

以上代码会输出类似下面的内容:

2022/1/2
2022年1月2日
2022年1月2日 00:37
2022年1月2日 00时37分12秒
2022/1/2 0:37
2022/1/2 0:37:12
0:37
0:37:12
2022-01-02T00:37:12.8802318+08:00
2022-01-02T00:37:12