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

主要包括:公共、文档、ORM、SqlSugar、定时任务、Redis、Mqtt、SignalR等库封装,后面可能还会适当删减。
今天我们将分享公共库中关于时间转换的相关封装,主要是关于本地与UTC的日期、时间与时间戳和字符串之间的相互转换。
01、日期时间转时间戳(秒)
该方法是把日期时间DateTime转成10位时间戳,即秒级时间戳,代码如下:
/// <summary>
/// 日期时间转时间戳(秒)
/// </summary>
/// <param name="dateTime">日期时间</param>
/// <returns>时间戳(秒)</returns>
public static long ToUnixTimestampBySeconds(this DateTime dateTime)
{
var dto = new DateTimeOffset(dateTime);
return dto.ToUnixTimeSeconds();
}
02、日期时间转时间戳(毫秒)
该方法是把日期时间DateTime转为13位时间戳,即毫秒级时间戳,代码如下:
/// <summary>
/// 日期时间转时间戳(毫秒)
/// </summary>
/// <param name="dateTime">日期时间</param>
/// <returns>时间戳(毫秒)</returns>
public static long ToUnixTimestampByMilliseconds(this DateTime dateTime)
{
var dto = new DateTimeOffset(dateTime);
return dto.ToUnixTimeMilliseconds();
}
03、时间戳(秒)转本地日期时间
该方法是把10位秒级时间戳转为本地日期时间DateTime,代码如下:
/// <summary>
/// 时间戳(秒)转本地日期时间
/// </summary>
/// <param name="timestamp">时间戳(秒)</param>
/// <returns>本地日期时间</returns>
public static DateTime ToLocalTimeDateTimeBySeconds(this long timestamp)
{
var dto = DateTimeOffset.FromUnixTimeSeconds(timestamp);
return dto.ToLocalTime().DateTime;
}
04、时间戳(毫秒)转本地日期时间
该方法是把13位毫秒级时间戳转为本地日期时间DateTime,代码如下:
/// <summary>
/// 时间戳(毫秒)转本地日期时间
/// </summary>
/// <param name="timestamp">时间戳(毫秒)</param>
/// <returns>本地日期时间</returns>
public static DateTime ToLocalTimeDateTimeByMilliseconds(this long timestamp)
{
var dto = DateTimeOffset.FromUnixTimeMilliseconds(timestamp);
return dto.ToLocalTime().DateTime;
}
05、时间戳(秒)转UTC日期时间
该方法是把10位秒级时间戳转为UTC日期时间DateTime,代码如下:
/// <summary>
/// 时间戳(秒)转UTC日期时间
/// </summary>
/// <param name="timestamp">时间戳(秒)</param>
/// <returns>UTC日期时间</returns>
public static DateTime ToUniversalTimeDateTimeBySeconds(this long timestamp)
{
var dto = DateTimeOffset.FromUnixTimeSeconds(timestamp);
return dto.ToUniversalTime().DateTime;
}
06、时间戳(毫秒)转UTC日期时间
该方法是把13位毫秒级时间戳转为UTC日期时间DateTime,代码如下:
/// <summary>
/// 时间戳(毫秒)转UTC日期时间
/// </summary>
/// <param name="timestamp">时间戳(毫秒)</param>
/// <returns>UTC日期时间</returns>
public static DateTime ToUniversalTimeDateTimeByMilliseconds(this long timestamp)
{
var dto = DateTimeOffset.FromUnixTimeMilliseconds(timestamp);
return dto.ToUniversalTime().DateTime;
}
07、时间戳(秒)转本地日期
该方法是把10位秒级时间戳转为本地日期DateOnly,代码如下:
/// <summary>
/// 时间戳(秒)转本地日期
/// </summary>
/// <param name="timestamp">时间戳(秒)</param>
/// <returns>本地日期</returns>
public static DateOnly ToLocalTimeDateBySeconds(this long timestamp)
{
var dt = timestamp.ToLocalTimeDateTimeBySeconds();
return DateOnly.FromDateTime(dt);
}
08、时间戳(毫秒)转本地日期
该方法是把13位毫秒级时间戳转为本地日期DateOnly,代码如下:
/// <summary>
/// 时间戳(毫秒)转本地日期
/// </summary>
/// <param name="timestamp">时间戳(毫秒)</param>
/// <returns>本地日期</returns>
public static DateOnly ToLocalTimeDateByMilliseconds(this long timestamp)
{
var dt = timestamp.ToLocalTimeDateTimeByMilliseconds();
return DateOnly.FromDateTime(dt);
}
09、时间戳(秒)转UTC日期
该方法是把10位秒级时间戳转为UTC日期DateOnly,代码如下:
/// <summary>
/// 时间戳(秒)转UTC日期
/// </summary>
/// <param name="timestamp">时间戳(秒)</param>
/// <returns>UTC日期</returns>
public static DateOnly ToUniversalTimeDateBySeconds(this long timestamp)
{
var dt = timestamp.ToUniversalTimeDateTimeBySeconds();
return DateOnly.FromDateTime(dt);
}
10、时间戳(毫秒)转UTC日期
该方法是把13位毫秒级时间戳转为UTC日期DateOnly,代码如下:
/// <summary>
/// 时间戳(毫秒)转UTC日期
/// </summary>
/// <param name="timestamp">时间戳(毫秒)</param>
/// <returns>UTC日期</returns>
public static DateOnly ToUniversalTimeDateByMilliseconds(this long timestamp)
{
var dt = timestamp.ToUniversalTimeDateTimeByMilliseconds();
return DateOnly.FromDateTime(dt);
}
11、时间戳(秒)转本地时间
该方法是把10位秒级时间戳转为本地时间TimeOnly,代码如下:
/// <summary>
/// 时间戳(秒)转本地时间
/// </summary>
/// <param name="timestamp">时间戳(秒)</param>
/// <returns>本地时间</returns>
public static TimeOnly ToLocalTimeTimeBySeconds(this long timestamp)
{
var dt = timestamp.ToLocalTimeDateTimeBySeconds();
return TimeOnly.FromDateTime(dt);
}
12、时间戳(毫秒)转本地时间
该方法是把13位毫秒级时间戳转为本地时间TimeOnly,代码如下:
/// <summary>
/// 时间戳(毫秒)转本地时间
/// </summary>
/// <param name="timestamp">时间戳(毫秒)</param>
/// <returns>本地时间</returns>
public static TimeOnly ToLocalTimeTimeByMilliseconds(this long timestamp)
{
var dt = timestamp.ToLocalTimeDateTimeByMilliseconds();
return TimeOnly.FromDateTime(dt);
}
13、时间戳(秒)转UTC时间
该方法是把10位秒级时间戳转为UTC时间TimeOnly,代码如下:
/// <summary>
/// 时间戳(秒)转UTC时间
/// </summary>
/// <param name="timestamp">时间戳(秒)</param>
/// <returns>UTC时间</returns>
public static TimeOnly ToUniversalTimeTimeBySeconds(this long timestamp)
{
var dt = timestamp.ToUniversalTimeDateTimeBySeconds();
return TimeOnly.FromDateTime(dt);
}
14、时间戳(毫秒)转UTC时间
该方法是把13位毫秒级时间戳转为UTC时间TimeOnly,代码如下:
/// <summary>
/// 时间戳(毫秒)转UTC时间
/// </summary>
/// <param name="timestamp">时间戳(毫秒)</param>
/// <returns>UTC时间</returns>
public static TimeOnly ToUniversalTimeTimeByMilliseconds(this long timestamp)
{
var dt = timestamp.ToUniversalTimeDateTimeByMilliseconds();
return TimeOnly.FromDateTime(dt);
}
15、字符串转日期时间,转换失败则返回空
该方法是把字符串转为日期时间DateTime,转换失败则返回空,具体代码如下:
/// <summary>
/// 字符串转日期时间,转换失败则返回空
/// </summary>
/// <param name="source">需转换的字符串</param>
/// <returns>日期时间</returns>
public static DateTime? ToDateTime(this string source)
{
if (DateTime.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
{
return date;
}
return default;
}
16、字符串转日期时间,转换失败则返回默认日期时间
该方法是把字符串转为日期时间DateTime,转换失败则返回默认日期时间,具体代码如下:
/// <summary>
/// 字符串转日期时间,转换失败则返回默认值
/// </summary>
/// <param name="source">需转换的字符串</param>
/// <param name="dateTime">默认日期时间</param>
/// <returns>日期时间</returns>
public static DateTime ToDateTimeOrDefault(this string source, DateTime dateTime)
{
if (DateTime.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
{
return date;
}
return dateTime;
}
17、字符串转日期,转换失败则返回空
该方法是把字符串转为日期DateOnly,转换失败则返回空,具体代码如下:
/// <summary>
/// 字符串转日期,转换失败则返回空
/// </summary>
/// <param name="source">需转换的字符串</param>
/// <returns>日期</returns>
public static DateOnly? ToDateOnly(this string source)
{
if (DateOnly.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
{
return date;
}
return default;
}
18、字符串转日期,转换失败则返回默认日期
该方法是把字符串转为日期DateOnly,转换失败则返回默日期,具体代码如下:
/// <summary>
/// 字符串转日期,转换失败则返回默认日期
/// </summary>
/// <param name="source">需转换的字符串</param>
/// <param name="dateOnly">默认日期</param>
/// <returns>日期</returns>
public static DateOnly ToDateOnlyOrDefault(this string source, DateOnly dateOnly)
{
if (DateOnly.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
{
return date;
}
return dateOnly;
}
19、字符串转时间,转换失败则返回空
该方法是把字符串转为日期TimeOnly,转换失败则返回空,具体代码如下:
/// <summary>
/// 字符串转时间,转换失败则返回空
/// </summary>
/// <param name="source">需转换的字符串</param>
/// <returns>时间</returns>
public static TimeOnly? ToTimeOnly(this string source)
{
if (TimeOnly.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
{
return date;
}
return default;
}
20、字符串转时间,转换失败则返回默认时间
该方法是把字符串转为日期TimeOnly,转换失败则返回默认时间,具体代码如下:
/// <summary>
/// 字符串转时间,转换失败则返回默认时间
/// </summary>
/// <param name="source">需转换的字符串</param>
/// <param name="timeOnly">默认时间</param>
/// <returns>时间</returns>
public static TimeOnly ToTimeOnlyOrDefault(this string source, TimeOnly timeOnly)
{
if (TimeOnly.TryParse(source, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date))
{
return date;
}
return timeOnly;
}
稍晚些时候我会把库上传至Nuget上,大家可以搜索Ideal.Core.Common直接使用。
注:测试方法代码以及示例源码都已经上传至代码库,有兴趣的可以看看。https://gitee.com/hugogoos/Ideal
开源 - Ideal库 - 常用时间转换扩展方法(一)的更多相关文章
- C# 一些常用的字符串扩展方法
以下可能是常用的.net扩展方法,记录下 EString.cs文件 /// <summary> /// 扩展字符串类 /// </summary> public static ...
- ES6 模版字符串及常用的es6扩展方法
1.ES6 模版字符串es6 模版字符串主要用于简化字符串的拼接 <script type="text/javascript"> let obj={name:'rdb' ...
- 开源且功能强大的C# 扩展方法类库Pure.Ext,包含1000+个拓展方法 (支持.Net Framework和.Net Core)
先上地址 Github: https://github.com/purestackorg/pure.ext Gitee: https://gitee.com/purestack/pure.ext 扩展 ...
- android 开源图表库MPChart最简单使用方法示例教程Demo--折线图 柱状图
转载请注明本文出处:http://blog.csdn.net/wingichoy/article/details/50428246 MPChart是android上一款强大的图表开源库,他可以轻松的绘 ...
- python3 5月26日 time模块常用时间转换 &datetime()模块学习 random()
import time 获取当前时间: 指定字符串格式:time.strftime("%Y-%m-%d %H:%M:%S") 当前时间戳:time.time() 当前时间元组格式 ...
- linux c++ 加载动态库常用的三种方法
链接库时的搜索路径顺序:LD_LIBRARY_PATH --> /etc/ld.so.conf --> /lib,/usr/lib 方法1. vi .bash_profile 设置环 ...
- python 爬虫数据处理字符串时间转换格式方法
startDate = "2018-10-01"endDate = "2018-10-31" ###字符转化为日期startTime = datetime.da ...
- Python常用时间转换
1 import time 2 import math 3 4 # 定义一些时间段的常量(秒) 5 TimeSec_Hour = 3600 6 TimeSec_Day = 86400 7 TimeSe ...
- Sql 常用时间转换
CONVERT(varchar(100), GETDATE(), 0); -- 08 31 2015 04:57PM CONVERT(varchar(100), GETDATE(), 20); --2 ...
- js常用时间转换函数
1.秒转换为时分秒 // 秒转换为时分秒 export function secExchangeMoment(value = 0){ let secondTime = parseInt(value); ...
随机推荐
- 神经网络之卷积篇:详解卷积步长(Strided convolutions)
详解卷积步长 卷积中的步幅是另一个构建卷积神经网络的基本操作,让向展示一个例子. 如果想用3×3的过滤器卷积这个7×7的图像,和之前不同的是,把步幅设置成了2.还和之前一样取左上方的3×3区域的元素的 ...
- redis集群之哨兵模式
redis集群之哨兵模式 1.集群部署 安装配置可参考一下地址: https://www.cnblogs.com/zhoujinyi/p/5569462.html 2.与springboot集成 这里 ...
- odoo openErp 随笔
环境: win7 x64 Python 2.7.18 nodejs pip: C:\> python --version C:\> pip --version C:\> cd \Co ...
- 视频中ppt、代码、ubuntu环境请扫描下面二维码,回复:ubuntu,即可获得
历时4个多月,第一期Linux驱动视频录制完毕, 一共32期,现在全部同步到了B站. 如果你觉得视频对你有用,建议大家多多点赞,投投免费硬币, 算是对我辛苦的劳动的认可. 视频中ppt.代码.ubun ...
- Python if __name__ == "__main__" 解释
一种机制,允许脚本以不同的方式运行,这取决于作为独立的程序执行还是作为模块被其他脚本导入.这种机制就是 if __name == "__main__" 其作用是控制某些代码块只在该 ...
- Redis实战之session共享
当线上集群时候,会出现session共享问题. 虽然Tomcat提供了session copy的功能,但是缺点比较明显: 1:当Tomcat多的时候,session需要大量同步到多台集群上,占用内网宽 ...
- 利用分布式锁在ASP.NET Core中实现防抖
前言 在 Web 应用开发过程中,防抖(Debounce) 是确保同一操作在短时间内不会被重复触发的一种有效手段.常见的场景包括防止用户在短时间内重复提交表单,或者避免多次点击按钮导致后台服务执行多次 ...
- node: /lib64/libm.so.6: version `GLIBC_2.27‘ not found问题解决方案
场景 centos7服务器使用nvm安装的node之后,只要使用npm或者node,均会出现以下问题. npm -v node: /lib64/libm.so.6: version `GLIBC_2. ...
- 痞子衡嵌入式:JLink命令行以及JFlash对于下载算法的作用地址范围认定
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是JLink命令行以及JFlash对于下载算法的作用地址范围认定. 最近痞子衡在给一个 RT1170 客户定制一个 Infineon Mi ...
- SpringBoot——项目快速启动
SpringBoot项目快速启动 对SpringBoot项目打包(执行Maven构建指令package) 执行后会生成对应的项目 jar包,在文件夹找到该文件 在对应文件夹下即可执行 j ...