C#日期时间类的使用方法(DateTime类、TimeSpan类与DateTimeOffset类)

 更新时间:2023年11月28日 14:53:22   作者:故事不长丨  
在C#中我们常使用到关于时间的相关操作,这篇文章主要给大家介绍了关于C#日期时间类的使用方法,文中介绍的方法分别包括DateTime类、TimeSpan类与DateTimeOffset类的相关资料,需要的朋友可以参考下

1. DateTime类

1.1 创建DateTime对象

可以使用以下方法创建一个DateTime对象:

DateTime dt1 = DateTime.Now; // 当前日期和时间
DateTime dt2 = new DateTime(2022, 1, 1); // 指定日期和时间
DateTime dt3 = DateTime.Parse("2022-12-31"); // 根据字符串解析日期和时间

1.2 获取日期和时间信息

可以使用以下属性获取DateTime对象的日期和时间信息:

int year = dt1.Year; // 年份
int month = dt1.Month; // 月份
int day = dt1.Day; // 日期
int hour = dt1.Hour; // 小时
int minute = dt1.Minute; // 分钟
int second = dt1.Second; // 秒钟
int millisecond = dt1.Millisecond; // 毫秒
DayOfWeek dayOfWeek = dt1.DayOfWeek; // 星期几

1.3 格式化日期和时间

可以使用以下方法将 DateTime 对象格式化为字符串:

  • 使用 ToString 方法和标准日期和时间格式字符串将 DateTime 对象格式化为指定的格式。
string format1 = dt.ToString(); // 默认格式(长日期时间)
string format2 = dt.ToString("yyyy-MM-dd"); // 自定义格式(年-月-日)
string format3 = dt.ToString("MMM dd, yyyy"); // 自定义格式(月份 缩写 日, 年)
  • 使用 ToString 方法和自定义格式字符串将 DateTime 对象格式化为特定的日期和时间格式。
string customFormat = dt.ToString("yyyyMMddHHmmss"); // 自定义格式(年月日小时分钟秒钟)
  • 使用 ToString 方法和 CultureInfo 对象将 DateTime 对象格式化为特定区域设置下的日期和时间格式。
CultureInfo culture = new CultureInfo("en-US");
string formattedDate = dt.ToString(culture); // 默认格式(根据区域设置)

以上方法中,ToString 方法可以接受一个参数来指定日期和时间的格式。标准日期和时间格式字符串是一些预定义的字符串,用于表示各种常见的日期和时间格式,比如 “d” 表示短日期格式,“t” 表示短时间格式。自定义格式字符串使用特定的字符来表示不同的日期和时间部分,比如 “yyyy” 表示四位数的年份,“MM” 表示两位数的月份。通过组合这些字符,可以创建自定义的日期和时间格式。

1.4 比较日期和时间

为了更好地比较日期和时间,可以使用以下方法:

  • 使用DateTime.Compare方法比较两个DateTime对象的大小,它返回一个整数值作为比较结果的标识。当返回值小于0时,表示第一个对象在第二个对象之前;当返回值大于0时,表示第一个对象在第二个对象之后;当返回值等于0时,表示两个对象相等。
int result = DateTime.Compare(dt1, dt2);
bool isBefore = result < 0; // dt1是否在dt2之前
bool isAfter = result > 0; // dt1是否在dt2之后
bool isEqual = result == 0; // dt1是否等于dt2
  • 使用DateTime对象的比较运算符(<、>、==)进行比较。
bool isBefore = dt1 < dt2; // dt1是否在dt2之前
bool isAfter = dt1 > dt2; // dt1是否在dt2之后
bool isEqual = dt1 == dt2; // dt1是否等于dt2

2. TimeSpan类

2.1 创建TimeSpan对象

可以使用以下方法创建一个TimeSpan对象:

TimeSpan ts1 = TimeSpan.FromDays(1); // 一天的时间间隔
TimeSpan ts2 = TimeSpan.FromHours(6); // 六小时的时间间隔
TimeSpan ts3 = TimeSpan.FromMinutes(30); // 三十分钟的时间间隔
TimeSpan ts4 = new TimeSpan(3, 30, 0); // 三小时三十分钟的时间间隔

2.2 获取时间间隔信息

可以使用以下属性获取TimeSpan对象的时间间隔信息:

double totalDays = ts1.TotalDays; // 总天数
double totalHours = ts1.TotalHours; // 总小时数
double totalMinutes = ts1.TotalMinutes; // 总分钟数
double totalSeconds = ts1.TotalSeconds; // 总秒数
double totalMilliseconds = ts1.TotalMilliseconds; // 总毫秒数

2.3 操作时间间隔

可以使用以下方法对TimeSpan对象进行操作:

TimeSpan sum = ts1 + ts2; // 两个时间间隔相加
TimeSpan difference = ts1 - ts2; // 两个时间间隔相减
TimeSpan multiply = ts1 * 2; // 时间间隔乘以一个倍数
TimeSpan divide = ts1 / 2; // 时间间隔除以一个倍数

3. DateTimeOffset类

3.1 创建DateTimeOffset对象

DateTimeOffset类用于表示具有时区信息的日期和时间。可以使用以下方法创建一个DateTimeOffset对象:

DateTimeOffset dto1 = DateTimeOffset.Now; // 当前日期和时间,带有本地时区信息
DateTimeOffset dto2 = new DateTimeOffset(2022, 1, 1, 0, 0, 0, TimeSpan.Zero); // 指定日期和时间,带有零时区信息
DateTimeOffset dto3 = DateTimeOffset.Parse("2022-12-31T23:59:59+08:00"); // 根据字符串解析日期和时间,带有指定时区信息

3.2 获取日期和时间信息

可以使用以下属性获取DateTimeOffset对象的日期和时间信息:

DateTimeOffset localTime = dto1.LocalDateTime; // 本地日期和时间
DateTimeOffset utcTime = dto1.UtcDateTime; // 协调世界时(UTC)日期和时间
TimeSpan offset = dto1.Offset; // 时区偏移量
TimeSpan offset = dto1.Offset; // 时区偏移量
//DateTimeOffset对象的日期和时间信息
int year = dto1.Year; // 年份
int month = dto1.Month; // 月份
int day = dto1.Day; // 日期
int hour = dto1.Hour; // 小时
int minute = dto1.Minute; // 分钟
int second = dto1.Second; // 秒钟
int millisecond = dto1.Millisecond; // 毫秒
DayOfWeek dayOfWeek = dto1.DayOfWeek; // 星期几
### 3.3 格式化日期和时间

可以使用以下方法将`DateTimeOffset`对象格式化为字符串:

```csharp
string format1 = dto1.ToString(); // 默认格式(长日期时间),带有时区信息
string format2 = dto1.ToString("yyyy-MM-dd"); // 自定义格式,不带时区信息
string format3 = dto1.ToString("MMM dd, yyyy"); // 自定义格式,不带时区信息

3.4 比较日期和时间

可以使用以下方法比较两个DateTimeOffset对象的大小:

bool isBefore = dto1 < dto2; // dto1是否在dto2之前
bool isAfter = dto1 > dto2; // dto1是否在dto2之后
bool isEqual = dto1 == dto2; // dto1是否等于dto2

结论

本文详细介绍了C#中日期时间处理的相关类的使用方法,包括DateTimeTimeSpanDateTimeOffset。你学会了如何创建和操作这些类的对象,以及如何获取日期和时间信息、格式化日期和时间。代码示例中的注释帮助你理解代码的含义和功能。

补充知识:C#使用AddYears方法获取当前时间20年后的时刻

2019-08-10 10:01

在C#语言中,DateTime.Now指的是程序当前时间,针对时间对象的操作,如果要计算某一个时间点N年后对应的时间时刻,则可以使用DateTime类的AddYears方法来实现。此文将介绍当前时间点20年后对应的时间点时刻的实现方式。

AddYears方法的签名为:DateTime AddYears(int value);,参数value为需要为加减的年数信息,如果value参数为负数时,则表示往前多少年对应的时间点,如果value值为正数则表示往后多少年对应的时间点。

例如获取当前时间的加上20年对应的时间时刻(程序运行时间为:2019/8/10 9:15:00),编写代码如下:

 DateTime result = DateTime.Now.AddYears(20);

运行结果为:result 结果为2039年8月10日 9:15:00。符合实际情况。

如果要获取当前时间的往前20年对应的时间信息,则可以使用下列代码。

  DateTime result = DateTime.Now.AddYears(-20);

到此这篇关于C#日期时间类的使用方法的文章就介绍到这了,更多相关C#日期时间类使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • VB.NET中TextBox的智能感知应用实例

    VB.NET中TextBox的智能感知应用实例

    这篇文章主要介绍了VB.NET中TextBox的智能感知应用实例,非常实用的功能,需要的朋友可以参考下
    2014-08-08
  • Unity实现识别图像中主体及其位置

    Unity实现识别图像中主体及其位置

    EasyDL基于飞桨开源深度学习平台,面向企业AI应用开发者提供零门槛AI开发平台,实现零算法基础定制高精度AI模型。本文将利用Unity和EasyDL实现识别图像中主体及其位置,感兴趣的可以了解一下
    2022-02-02
  • C#开发之int与string转化操作

    C#开发之int与string转化操作

    这篇文章主要介绍了C#开发之int与string转化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C#连接到sql server2008数据库的实例代码

    C#连接到sql server2008数据库的实例代码

    这篇文章主要介绍了C#连接到sql server2008数据库的实例代码,需要的朋友可以参考下
    2017-09-09
  • C#获取关键字附近文字算法实例

    C#获取关键字附近文字算法实例

    这篇文章主要介绍了C#获取关键字附近文字算法,实例分析了文字查找算法的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • c#基础系列之值类型和引用类型的深入理解

    c#基础系列之值类型和引用类型的深入理解

    这篇文章主要给大家介绍了关于c#基础系列之值类型和引用类型的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • C# Unicode编码解码的实现

    C# Unicode编码解码的实现

    本文主要介绍了C# Unicode编码解码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C#画笔Pen用法实例

    C#画笔Pen用法实例

    这篇文章主要介绍了C#画笔Pen用法,实例分析了画笔Pen绘制图形的相关技巧,需要的朋友可以参考下
    2015-06-06
  • C#多线程编程中的锁系统(二)

    C#多线程编程中的锁系统(二)

    这篇文章主要介绍了C#多线程编程中的锁系统(二),本文讲解了volatile、Interlocked、ReaderWriterLockSlim等升级锁和原子操作的使用实例,需要的朋友可以参考下
    2015-04-04
  • C#操作XML通用方法汇总

    C#操作XML通用方法汇总

    这篇文章主要为大家详细介绍了C#操作XML通用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10

最新评论