C#怎么使用日期时间_C# DateTime日期操作方法大全

来源:PHP编程网作者:孙悟空头衔:草根站长
导读:本期聚焦于小伙伴创作的《C#怎么使用日期时间_C# DateTime日期操作方法大全》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#怎么使用日期时间_C# DateTime日期操作方法大全》有用,将其分享出去将是对创作者最好的鼓励。

在C#编程中,DateTime是处理日期和时间的核心类型,位于System命名空间下,支持日期创建、属性取值、格式化输出、时间运算、时区转换等多种操作,是日常开发中使用频率极高的基础类型。

C#怎么使用日期时间_C# DateTime日期操作方法大全

一、DateTime的创建方式

DateTime提供了多种构造方式,可根据实际需求创建对应的日期时间实例。

1. 基础构造方法

通过指定年、月、日、时、分、秒等参数创建DateTime实例,最常用的构造方法如下:

using System;

class Program
{
    static void Main()
    {
        // 创建2024年5月1日 12点30分15秒的DateTime实例
        DateTime dt1 = new DateTime(2024, 5, 1, 12, 30, 15);
        Console.WriteLine(dt1);

        // 仅指定年月日,时分秒默认为0
        DateTime dt2 = new DateTime(2024, 5, 1);
        Console.WriteLine(dt2);
    }
}

2. 获取当前时间

通过DateTime.Now可以获取当前本地时间,DateTime.UtcNow可以获取当前的UTC时间:

using System;

class Program
{
    static void Main()
    {
        // 获取当前本地时间
        DateTime localNow = DateTime.Now;
        Console.WriteLine($"本地当前时间:{localNow}");

        // 获取当前UTC时间
        DateTime utcNow = DateTime.UtcNow;
        Console.WriteLine($"UTC当前时间:{utcNow}");
    }
}

3. 解析字符串为DateTime

如果有一个日期时间格式的字符串,可以通过DateTime.ParseDateTime.TryParse方法转换为DateTime实例,后者可以避免转换失败抛出异常:

using System;

class Program
{
    static void Main()
    {
        string timeStr = "2024-05-01 12:30:15";
        // Parse方法,转换失败会抛异常
        DateTime dt3 = DateTime.Parse(timeStr);
        Console.WriteLine(dt3);

        // TryParse方法,转换失败不会抛异常,返回bool结果
        if (DateTime.TryParse("2024-05-01", out DateTime dt4))
        {
            Console.WriteLine($"转换成功:{dt4}");
        }
        else
        {
            Console.WriteLine("转换失败");
        }
    }
}

二、DateTime常用属性取值

DateTime提供了丰富的属性,可以获取日期时间的各个组成部分:

using System;

class Program
{
    static void Main()
    {
        DateTime now = DateTime.Now;
        Console.WriteLine($"当前年份:{now.Year}");
        Console.WriteLine($"当前月份:{now.Month}");
        Console.WriteLine($"当前日:{now.Day}");
        Console.WriteLine($"当前小时:{now.Hour}");
        Console.WriteLine($"当前分钟:{now.Minute}");
        Console.WriteLine($"当前秒:{now.Second}");
        Console.WriteLine($"当前毫秒:{now.Millisecond}");
        Console.WriteLine($"当前是星期几:{now.DayOfWeek}");
        Console.WriteLine($"当前是今年的第几天:{now.DayOfYear}");
        Console.WriteLine($"当前日期部分:{now.Date}");
    }
}

三、DateTime格式化输出

可以通过ToString方法配合格式字符串,将DateTime转换为指定格式的字符串,常用的格式符如下:

格式符说明示例输出
yyyy四位年份2024
MM两位月份,不足补005
dd两位日期,不足补001
HH24小时制小时,两位不足补014
hh12小时制小时,两位不足补002
mm两位分钟,不足补030
ss两位秒,不足补015
fff三位毫秒123

格式化代码示例:

using System;

class Program
{
    static void Main()
    {
        DateTime dt = new DateTime(2024, 5, 1, 14, 30, 15, 123);
        // 自定义格式输出
        string format1 = dt.ToString("yyyy-MM-dd HH:mm:ss.fff");
        Console.WriteLine(format1); // 输出 2024-05-01 14:30:15.123

        string format2 = dt.ToString("yyyy年MM月dd日 hh:mm:ss");
        Console.WriteLine(format2); // 输出 2024年05月01日 02:30:15

        // 使用内置标准格式
        Console.WriteLine(dt.ToString("d")); // 短日期格式,输出 2024/5/1
        Console.WriteLine(dt.ToString("D")); // 长日期格式,输出 2024年5月1日
        Console.WriteLine(dt.ToString("F")); // 完整日期短时间格式,输出 2024年5月1日 14:30
    }
}

四、DateTime时间运算

DateTime支持加减时间跨度,时间跨度通过TimeSpan类型表示,也可以直接对日期的各个部分进行增减。

1. 加减TimeSpan

using System;

class Program
{
    static void Main()
    {
        DateTime dt = new DateTime(2024, 5, 1, 12, 0, 0);
        // 加3天2小时
        TimeSpan addSpan = new TimeSpan(3, 2, 0, 0);
        DateTime newDt1 = dt.Add(addSpan);
        Console.WriteLine($"加3天2小时后:{newDt1}");

        // 减1小时30分钟
        DateTime newDt2 = dt.Subtract(new TimeSpan(1, 30, 0));
        Console.WriteLine($"减1小时30分钟后:{newDt2}");
    }
}

2. 直接增减指定时间单位

DateTime提供了AddYearsAddMonthsAddDays等专用方法,可以直接对对应单位进行增减:

using System;

class Program
{
    static void Main()
    {
        DateTime dt = new DateTime(2024, 5, 1, 12, 0, 0);
        Console.WriteLine($"原时间:{dt}");
        Console.WriteLine($"加2年:{dt.AddYears(2)}");
        Console.WriteLine($"减3个月:{dt.AddMonths(-3)}");
        Console.WriteLine($"加10天:{dt.AddDays(10)}");
        Console.WriteLine($"减2小时:{dt.AddHours(-2)}");
        Console.WriteLine($"加30分钟:{dt.AddMinutes(30)}");
    }
}

3. 计算两个时间的间隔

两个DateTime实例相减,会得到TimeSpan类型的间隔结果:

using System;

class Program
{
    static void Main()
    {
        DateTime start = new DateTime(2024, 5, 1, 8, 0, 0);
        DateTime end = new DateTime(2024, 5, 3, 12, 30, 0);
        TimeSpan span = end - start;
        Console.WriteLine($"间隔总天数:{span.TotalDays}");
        Console.WriteLine($"间隔总小时数:{span.TotalHours}");
        Console.WriteLine($"间隔总分钟数:{span.TotalMinutes}");
        Console.WriteLine($"间隔总秒数:{span.TotalSeconds}");
    }
}

五、DateTime时区转换

如果需要处理不同时区的时间,可以结合TimeZoneInfo类完成转换:

using System;

class Program
{
    static void Main()
    {
        // 获取UTC时间
        DateTime utcNow = DateTime.UtcNow;
        Console.WriteLine($"UTC时间:{utcNow}");

        // 转换为东八区时间(北京时间)
        TimeZoneInfo chinaZone = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");
        DateTime chinaTime = TimeZoneInfo.ConvertTimeFromUtc(utcNow, chinaZone);
        Console.WriteLine($"北京时间:{chinaTime}");

        // 本地时间转换为UTC时间
        DateTime localNow = DateTime.Now;
        DateTime localToUtc = TimeZoneInfo.ConvertTimeToUtc(localNow);
        Console.WriteLine($"本地时间转UTC:{localToUtc}");
    }
}

六、注意事项

  • DateTime的Now属性获取的是本地时间,受系统时区设置影响,如果需要统一的时间标准,建议使用UtcNow
  • 使用DateTime.Parse转换字符串时,如果字符串格式不符合当前系统的日期格式,会抛出异常,生产环境建议使用DateTime.TryParse或者指定格式的DateTime.ParseExact
  • DateTime类型是可变的,所有Add相关方法都会返回新的DateTime实例,不会修改原实例的值。
  • 如果需要处理更复杂的时间场景,比如只有日期没有时间、只有时间没有日期,可以考虑使用DateOnlyTimeOnly类型,这两个类型是.NET 6之后新增的,更贴合对应场景的需求。

C#DateTime日期操作时间格式化修改时间:2026-06-13 19:39:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。