开源 - Ideal库 - 常用时间转换扩展方法(一)

打印 上一主题 下一主题

主题 912|帖子 912|积分 2736

从事软件开发这么多年,平常也积累了一些方便本身快速开发的帮助类,一直在想着以什么方式分享出来,因此有了这个系列文章,后面我将以《开源-Ideal库》系列文章分享一些我认为比力成熟、比力方便、比力好的代码,如果感觉有鉴戒的地方可以集成到本身的公共代码库中,同时我也会以Nuget包的方式发布出来,以供直接下载使用。

主要包括:公共、文档、ORM、SqlSugar、定时使命、Redis、Mqtt、SignalR等库封装,后面可能还会适当删减。
今天我们将分享公共库中关于时间转换的相干封装,主要是关于当地与UTC的日期、时间与时间戳和字符串之间的相互转换。
01、日期时间转时间戳(秒)

该方法是把日期时间DateTime转成10位时间戳,即秒级时间戳,代码如下:
  1. /// <summary>
  2. /// 日期时间转时间戳(秒)
  3. /// </summary>
  4. /// <param name="dateTime">日期时间</param>
  5. /// <returns>时间戳(秒)</returns>
  6. public static long ToUnixTimestampBySeconds(this DateTime dateTime)
  7. {
  8.     var dto = new DateTimeOffset(dateTime);
  9.     return dto.ToUnixTimeSeconds();
  10. }
复制代码
02、日期时间转时间戳(毫秒)

该方法是把日期时间DateTime转为13位时间戳,即毫秒级时间戳,代码如下:
  1. /// <summary>
  2. /// 日期时间转时间戳(毫秒)
  3. /// </summary>
  4. /// <param name="dateTime">日期时间</param>
  5. /// <returns>时间戳(毫秒)</returns>
  6. public static long ToUnixTimestampByMilliseconds(this DateTime dateTime)
  7. {
  8.     var dto = new DateTimeOffset(dateTime);
  9.     return dto.ToUnixTimeMilliseconds();
  10. }
复制代码
03、时间戳(秒)转当地日期时间

该方法是把10位秒级时间戳转为当地日期时间DateTime,代码如下:
  1. /// <summary>
  2. /// 时间戳(秒)转本地日期时间
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(秒)</param>
  5. /// <returns>本地日期时间</returns>
  6. public static DateTime ToLocalTimeDateTimeBySeconds(this long timestamp)
  7. {
  8.     var dto = DateTimeOffset.FromUnixTimeSeconds(timestamp);
  9.     return dto.ToLocalTime().DateTime;
  10. }
复制代码
04、时间戳(毫秒)转当地日期时间

该方法是把13位毫秒级时间戳转为当地日期时间DateTime,代码如下:
  1. /// <summary>
  2. /// 时间戳(毫秒)转本地日期时间
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(毫秒)</param>
  5. /// <returns>本地日期时间</returns>
  6. public static DateTime ToLocalTimeDateTimeByMilliseconds(this long timestamp)
  7. {
  8.     var dto = DateTimeOffset.FromUnixTimeMilliseconds(timestamp);
  9.     return dto.ToLocalTime().DateTime;
  10. }
复制代码
05、时间戳(秒)转UTC日期时间

该方法是把10位秒级时间戳转为UTC日期时间DateTime,代码如下:
  1. /// <summary>
  2. /// 时间戳(秒)转UTC日期时间
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(秒)</param>
  5. /// <returns>UTC日期时间</returns>
  6. public static DateTime ToUniversalTimeDateTimeBySeconds(this long timestamp)
  7. {
  8.     var dto = DateTimeOffset.FromUnixTimeSeconds(timestamp);
  9.     return dto.ToUniversalTime().DateTime;
  10. }
复制代码
06、时间戳(毫秒)转UTC日期时间

该方法是把13位毫秒级时间戳转为UTC日期时间DateTime,代码如下:
  1. /// <summary>
  2. /// 时间戳(毫秒)转UTC日期时间
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(毫秒)</param>
  5. /// <returns>UTC日期时间</returns>
  6. public static DateTime ToUniversalTimeDateTimeByMilliseconds(this long timestamp)
  7. {
  8.     var dto = DateTimeOffset.FromUnixTimeMilliseconds(timestamp);
  9.     return dto.ToUniversalTime().DateTime;
  10. }
复制代码
07、时间戳(秒)转当地日期

该方法是把10位秒级时间戳转为当地日期DateOnly,代码如下:
  1. /// <summary>
  2. /// 时间戳(秒)转本地日期
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(秒)</param>
  5. /// <returns>本地日期</returns>
  6. public static DateOnly ToLocalTimeDateBySeconds(this long timestamp)
  7. {
  8.     var dt = timestamp.ToLocalTimeDateTimeBySeconds();
  9.     return DateOnly.FromDateTime(dt);
  10. }
复制代码
08、时间戳(毫秒)转当地日期

该方法是把13位毫秒级时间戳转为当地日期DateOnly,代码如下:
  1. /// <summary>
  2. /// 时间戳(毫秒)转本地日期
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(毫秒)</param>
  5. /// <returns>本地日期</returns>
  6. public static DateOnly ToLocalTimeDateByMilliseconds(this long timestamp)
  7. {
  8.     var dt = timestamp.ToLocalTimeDateTimeByMilliseconds();
  9.     return DateOnly.FromDateTime(dt);
  10. }
复制代码
09、时间戳(秒)转UTC日期

该方法是把10位秒级时间戳转为UTC日期DateOnly,代码如下:
  1. /// <summary>
  2. /// 时间戳(秒)转UTC日期
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(秒)</param>
  5. /// <returns>UTC日期</returns>
  6. public static DateOnly ToUniversalTimeDateBySeconds(this long timestamp)
  7. {
  8.     var dt = timestamp.ToUniversalTimeDateTimeBySeconds();
  9.     return DateOnly.FromDateTime(dt);
  10. }
复制代码
10、时间戳(毫秒)转UTC日期

该方法是把13位毫秒级时间戳转为UTC日期DateOnly,代码如下:
  1. /// <summary>
  2. /// 时间戳(毫秒)转UTC日期
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(毫秒)</param>
  5. /// <returns>UTC日期</returns>
  6. public static DateOnly ToUniversalTimeDateByMilliseconds(this long timestamp)
  7. {
  8.     var dt = timestamp.ToUniversalTimeDateTimeByMilliseconds();
  9.     return DateOnly.FromDateTime(dt);
  10. }
复制代码
11、时间戳(秒)转当地时间

该方法是把10位秒级时间戳转为当地时间TimeOnly,代码如下:
  1. /// <summary>
  2. /// 时间戳(秒)转本地时间
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(秒)</param>
  5. /// <returns>本地时间</returns>
  6. public static TimeOnly ToLocalTimeTimeBySeconds(this long timestamp)
  7. {
  8.     var dt = timestamp.ToLocalTimeDateTimeBySeconds();
  9.     return TimeOnly.FromDateTime(dt);
  10. }
复制代码
12、时间戳(毫秒)转当地时间

该方法是把13位毫秒级时间戳转为当地时间TimeOnly,代码如下:
  1. /// <summary>
  2. /// 时间戳(毫秒)转本地时间
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(毫秒)</param>
  5. /// <returns>本地时间</returns>
  6. public static TimeOnly ToLocalTimeTimeByMilliseconds(this long timestamp)
  7. {
  8.     var dt = timestamp.ToLocalTimeDateTimeByMilliseconds();
  9.     return TimeOnly.FromDateTime(dt);
  10. }
复制代码
13、时间戳(秒)转UTC时间

该方法是把10位秒级时间戳转为UTC时间TimeOnly,代码如下:
  1. /// <summary>
  2. /// 时间戳(秒)转UTC时间
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(秒)</param>
  5. /// <returns>UTC时间</returns>
  6. public static TimeOnly ToUniversalTimeTimeBySeconds(this long timestamp)
  7. {
  8.     var dt = timestamp.ToUniversalTimeDateTimeBySeconds();
  9.     return TimeOnly.FromDateTime(dt);
  10. }
复制代码
14、时间戳(毫秒)转UTC时间

该方法是把13位毫秒级时间戳转为UTC时间TimeOnly,代码如下:
  1. /// <summary>
  2. /// 时间戳(毫秒)转UTC时间
  3. /// </summary>
  4. /// <param name="timestamp">时间戳(毫秒)</param>
  5. /// <returns>UTC时间</returns>
  6. public static TimeOnly ToUniversalTimeTimeByMilliseconds(this long timestamp)
  7. {
  8.     var dt = timestamp.ToUniversalTimeDateTimeByMilliseconds();
  9.     return TimeOnly.FromDateTime(dt);
  10. }
复制代码
15、字符串转日期时间,转换失败则返回空

该方法是把字符串转为日期时间DateTime,转换失败则返回空,详细代码如下:
  1. /// <summary>
  2. /// 字符串转日期时间,转换失败则返回空
  3. /// </summary>
  4. /// <param name="source">需转换的字符串</param>
  5. /// <returns>日期时间</returns>
  6. public static DateTime? ToDateTime(this string source)
  7. {
  8.     if (DateTime.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
  9.     {
  10.         return date;
  11.     }
  12.     return default;
  13. }
复制代码
16、字符串转日期时间,转换失败则返回默认日期时间

该方法是把字符串转为日期时间DateTime,转换失败则返回默认日期时间,详细代码如下:
  1. /// <summary>
  2. /// 字符串转日期时间,转换失败则返回默认值
  3. /// </summary>
  4. /// <param name="source">需转换的字符串</param>
  5. /// <param name="dateTime">默认日期时间</param>
  6. /// <returns>日期时间</returns>
  7. public static DateTime ToDateTimeOrDefault(this string source, DateTime dateTime)
  8. {
  9.     if (DateTime.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
  10.     {
  11.         return date;
  12.     }
  13.     return dateTime;
  14. }
复制代码
17、字符串转日期,转换失败则返回空

该方法是把字符串转为日期DateOnly,转换失败则返回空,详细代码如下:
  1. /// <summary>
  2. /// 字符串转日期,转换失败则返回空
  3. /// </summary>
  4. /// <param name="source">需转换的字符串</param>
  5. /// <returns>日期</returns>
  6. public static DateOnly? ToDateOnly(this string source)
  7. {
  8.     if (DateOnly.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
  9.     {
  10.         return date;
  11.     }
  12.     return default;
  13. }
复制代码
18、字符串转日期,转换失败则返回默认日期

该方法是把字符串转为日期DateOnly,转换失败则返回默日期,详细代码如下:
  1. /// <summary>
  2. /// 字符串转日期,转换失败则返回默认日期
  3. /// </summary>
  4. /// <param name="source">需转换的字符串</param>
  5. /// <param name="dateOnly">默认日期</param>
  6. /// <returns>日期</returns>
  7. public static DateOnly ToDateOnlyOrDefault(this string source, DateOnly dateOnly)
  8. {
  9.     if (DateOnly.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
  10.     {
  11.         return date;
  12.     }
  13.     return dateOnly;
  14. }
复制代码
19、字符串转时间,转换失败则返回空

该方法是把字符串转为日期TimeOnly,转换失败则返回空,详细代码如下:
  1. /// <summary>
  2. /// 字符串转时间,转换失败则返回空
  3. /// </summary>
  4. /// <param name="source">需转换的字符串</param>
  5. /// <returns>时间</returns>
  6. public static TimeOnly? ToTimeOnly(this string source)
  7. {
  8.     if (TimeOnly.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
  9.     {
  10.         return date;
  11.     }
  12.     return default;
  13. }
复制代码
20、字符串转时间,转换失败则返回默认时间

该方法是把字符串转为日期TimeOnly,转换失败则返回默认时间,详细代码如下:
  1. /// <summary>
  2. /// 字符串转时间,转换失败则返回默认时间
  3. /// </summary>
  4. /// <param name="source">需转换的字符串</param>
  5. /// <param name="timeOnly">默认时间</param>
  6. /// <returns>时间</returns>
  7. public static TimeOnly ToTimeOnlyOrDefault(this string source, TimeOnly timeOnly)
  8. {
  9.     if (TimeOnly.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
  10.     {
  11.         return date;
  12.     }
  13.     return timeOnly;
  14. }
复制代码
稍晚些时候我会把库上传至Nuget上,各人可以搜刮Ideal.Core.Common直接使用。
:测试方法代码以及示例源码都已经上传至代码库,有爱好的可以看看。https://gitee.com/hugogoos/Ideal

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表