DateTime 常用方法介绍

一、常用静态成员(直接通过DateTime类调用,多用于创建、判断)

这些是开发中最常调用的静态方法/字段:

成员作用示例
DateTime.Now获取当前操作系统本地时区的当前日期时间DateTime now = DateTime.Now;
DateTime.UtcNow获取当前UTC(协调世界时)时间,多时区开发推荐存储用UTCDateTime utcNow = DateTime.UtcNow;
DateTime.Today获取本地时区今天的零点日期(时间部分为00:00:00)DateTime today = DateTime.Today;
DateTime.MinValue / DateTime.MaxValue表示DateTime能表示的最小/最大日期,多用于初始化、范围判断DateTime defaultDate = DateTime.MinValue;
DateTime.IsLeapYear(int year)静态方法,判断指定年份是否为闰年bool is2024Leap = DateTime.IsLeapYear(2024); // 返回true
DateTime.DaysInMonth(int year, int month)静态方法,获取指定年月的总天数int days = DateTime.DaysInMonth(2024,2); // 返回29(闰年2月)
DateTime.TryParse(string str, out DateTime result)安全地将字符串解析为DateTime,解析失败不抛异常,返回falsecsharp if(DateTime.TryParse("2024-05-20", out var dt)) { // 解析成功使用dt }
DateTime.TryParseExact(string str, string format, ...)按指定格式解析字符串,适合固定格式的日期转换,准确性更高csharp // 严格解析"yyyy-MM-dd"格式的字符串 DateTime.TryParseExact("2024-05-20", "yyyy-MM-dd", null, DateTimeStyles.None, out dt);
DateTime.Parse / DateTime.ParseExact和上面两个Try方法对应,解析失败直接抛出异常,适合确定格式合法的场景
DateTime.Compare(DateTime dt1, DateTime dt2)比较两个时间的先后,返回值:
负整数 → dt1更早;0 → 相等;正整数 → dt1更晚

二、常用实例属性(从DateTime对象获取时间分量)

创建DateTime对象后,常用属性获取时间的各个部分:

DateTime dt = new DateTime(2024, 5, 20, 14, 30, 15);
dt.Year    // 2024 年
dt.Month   // 5 月
dt.Day     // 20 日
dt.Hour    // 14 时(24小时制)
dt.Minute  // 30 分
dt.Second  // 15 秒
dt.DayOfWeek // Monday (星期几,枚举值)
dt.DayOfYear // 141 (今年第几天)
dt.Kind    // Unspecified/Local/Utc 标识该时间的时区类型

三、常用实例方法(操作DateTime对象)

方法作用示例
AddYears(int years) / AddMonths(int months) / AddDays(double days) / AddHours(double hours) / AddMinutes(double minutes) / AddSeconds(double seconds)对当前时间加上指定时长,支持传负数实现减法,返回新的DateTime对象(原对象不变)csharp // 3天后的日期 DateTime after3Days = DateTime.Now.AddDays(3); // 2小时前的时间 DateTime before2h = DateTime.Now.AddHours(-2);
Subtract()两个重载:
1. 减去另一个时间,得到时间间隔TimeSpan
2. 减去一个TimeSpan,得到新的DateTime
csharp TimeSpan span = dtEnd.Subtract(dtStart); // 两个时间差
ToUniversalTime()将当前本地时间转换为UTC时间DateTime utc = dt.ToUniversalTime();
ToLocalTime()将当前UTC时间转换为本地时区时间DateTime local = utc.ToLocalTime();
ToString(string format)按指定格式把时间转成字符串,最常用dt.ToString("yyyy-MM-dd HH:mm:ss"); // 输出 2024-05-20 14:30:15
ToShortDateString()转短日期字符串(比如 2024/5/20
ToLongDateString()转长日期字符串(比如 2024年5月20日

也支持直接用运算符做时间运算:

TimeSpan diff = dt2 - dt1; // 两个时间的间隔
DateTime newDt = dt1 + new TimeSpan(3, 0, 0); // dt1加3小时

四、常用开发场景示例

获取当月第一天/最后一天

DateTime now = DateTime.Now;
DateTime firstDay = new DateTime(now.Year, now.Month, 1); // 当月第一天
DateTime lastDay = firstDay.AddMonths(1).AddDays(-1); // 当月最后一天

计算两个时间相差多少天

double totalDays = (endDate - startDate).TotalDays;

五、常见注意事项

  1. 格式化字符串的大小写区别:MM是月份,mm是分钟;HH是24小时制,hh是12小时制,非常容易写错。
  2. DateTime.Kind属性会影响时区转换结果,转换时间前尽量保证Kind值和时间的实际时区匹配,避免转换错误。
  3. 新开发涉及多时区场景,推荐搭配TimeZoneInfo使用或直接用DateTimeOffset类型,比单纯用DateTime更不容易出错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值