C# 时间戳(13位)与事件互转

别再手动算时间戳了!C# .NET 6/7 中 DateTime 与秒/毫秒时间戳互转的完整指南 本文详细介绍了在C# .NET 6/7中实现DateTime与秒/毫秒时间戳互转的完整指南,涵盖基础转换方法、时区处理、高性能操作及常见陷阱解决方案。通过实用代码示例和最佳实践,帮助开发者在API开发、日志记录等场景中高效处理时间戳,避免常见错误。 阅读详情
/// <summary>
        /// 获取时间戳
        /// </summary>
        /// <returns></returns>
        public static string GetTimeStamp(System.DateTime time)
        {
            long ts = ConvertDateTimeToInt(time);
            return ts.ToString();
        }
        /// <summary>  
        /// 将c# DateTime时间格式转换为Unix时间戳格式  
        /// </summary>  
        /// <param name="time">时间</param>  
        /// <returns>long</returns>  
        public static long ConvertDateTimeToInt(System.DateTime time)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
            long t = (time.Ticks - startTime.Ticks) / 10000;   //除10000调整为13位      
            return t;
        }
        /// <summary>        
        /// 时间戳转为C#格式时间        
        /// </summary>        
        /// <param name=”timeStamp”></param>        
        /// <returns></returns>        
        private DateTime ConvertStringToDateTime(string timeStamp)
        {
            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            long lTime = long.Parse(timeStamp + "0000");
            TimeSpan toNow = new TimeSpan(lTime);
            return dtStart.Add(toNow);
        }
/// <summary>
    /// 时间戳
    /// </summary>
    public class TimeHelp
    {
        /// <summary>
        /// 获取时间戳
        /// </summary>
        /// <returns></returns>
        public static string GetTimeStamp(System.DateTime time,int length=13)
        {
            long ts = ConvertDateTimeToInt(time);
            return ts.ToString().Substring(0,length);
        }
        /// <summary>  
        /// 将c# DateTime时间格式转换为Unix时间戳格式  
        /// </summary>  
        /// <param name="time">时间</param>  
        /// <returns>long</returns>  
        public static long ConvertDateTimeToInt(System.DateTime time)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
            long t = (time.Ticks - startTime.Ticks) / 10000;   //除10000调整为13位      
            return t;
        }
        /// <summary>        
        /// 时间戳转为C#格式时间        
        /// </summary>        
        /// <param name=”timeStamp”></param>        
        /// <returns></returns>        
        public static DateTime ConvertStringToDateTime(string timeStamp)
        {
            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            long lTime = long.Parse(timeStamp + "0000");
            TimeSpan toNow = new TimeSpan(lTime);
            return dtStart.Add(toNow);
        }

        /// <summary>
        /// 时间戳转为C#格式时间10位
        /// </summary>
        /// <param name="timeStamp">Unix时间戳格式</param>
        /// <returns>C#格式时间</returns>
        public static DateTime GetDateTimeFrom1970Ticks(long curSeconds)
        {
            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            return dtStart.AddSeconds(curSeconds);
        }

        /// <summary>
        /// 验证时间戳
        /// </summary>
        /// <param name="time"></param>
        /// <param name="interval">差值(分钟)</param>
        /// <returns></returns>
        public static bool IsTime(long time, double interval)
        {
            DateTime dt = GetDateTimeFrom1970Ticks(time);
            //取现在时间
            DateTime dt1 = DateTime.Now.AddMinutes(interval);
            DateTime dt2 = DateTime.Now.AddMinutes(interval * -1);
            if (dt > dt2 && dt < dt1)
            {
                return true;
            }
            else {
                return false;
            }
        }

        /// <summary>
        /// 判断时间戳是否正确(验证前8位)
        /// </summary>
        /// <param name="time"></param>
        /// <returns></returns>
        public static bool IsTime(string time)
        {
            string str = GetTimeStamp(DateTime.Now,8);
            if (str.Equals(time))
            {
                return true;
            }
            else {
                return false;
            }
        }
    }

转自:代码描绘人生

C# 时间戳与时间的相互转换 阅读详情

相关推荐

Unity游戏开发必备:C#时间戳与DateTime的高效互转(支持.NET 4.x)

本文针对Unity游戏开发中C#时间戳与DateTime的转换需求,提供了兼容.NET 4.x框架的高效互转方案。文章深入剖析了时间戳在帧同步、数据持久化等核心场景的应用,重点解决了时区处理、性能优化与GC内存管理等常见痛点,并给出了可直接用于生产环境的工具类代码与最佳实践。

weixin_29306261的博客 598

C#获取时间戳与转换

C#获取时间戳获取时间戳(秒)获取时间戳(毫秒) 获取时间戳(秒) (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000 获取时间戳(毫秒) (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000 转载自此博客 ...

技术分享博客 7156

c#学习笔记之Invoke()作用分析

Invoke()的作用是:在应用程序的主线程上执行指定的委托。一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke(); 1. //测试的窗体 2. public class TestForm : Form 3. { 4. //创建一个Button对象 5. private Button button = new B

一颗偏执的心 2万+

C# DateTime的ToString()方法的使用

Console.WriteLine("ToShortDateString:" + DateTime.Now.ToShortDateString()); Console.WriteLine("ToLongDateString:" + DateTime.Now.ToLongDateString()); Console.WriteLine("ToShortTimeString:" + Dat...

weixin_30301183的博客 575

半导体设备C#上位机开发包:SECS/GEM通信实现+ASCII/HEX/BIN/BCD互转工具

面向半导体制造设备通信场景的C#上位机完整工程,内置SECS-II协议栈与GEM标准支持,可完成设备初始化、状态监控、事件上报、消息收发等典型交互流程。提供轻量级但功能完备的进制转换模块,覆盖ASCII、HEX、BIN、BCD四种编码格式之间的双向转换,同时集成SECS消息常用的二进制打包与解析逻辑,便于协议调试和现场对接。代码采用模块化设计,核心功能封装为独立类库,含清晰的协议常量定义、结构化日志输出、简易图形界面(WinForm)及完整VS项目文件。配套HTML和TXT说明文档解释关键接口与使用流程,多

wdx012345的博客 246

C# 时间与时间戳互转的方法(13位)

目前经常出现的时间有三个: 本地时间(locale time) 格林威治时间(Greenwich Mean Time GMT) 时间协调时间 (Universal Time Coordinated UTC) 时间标准: (1)世界时 世界时是最早的时间标准。在1884年,国际上将1s确定为全年内每日平均长度的1/8.64×104。以此标准形成的时间系统,称为世界时(UT1)。 1972年国际上开始使用国际原子时标,从那以后,经过格林威治老天文台本初子午线的时间便被称为世界时(UT2),或称格林威治时间(GMT),UT2是对地球转速周期性差异进行校正后的世界时。 (2)原子时

C# 转换当前时间为时间戳的 3 个方法

在 C# 中,将当前时间转换为时间戳是一个简单而重要的操作。通过以上 3 种方法,你可以轻松获取 Unix 时间戳,无论是以秒还是毫秒为单位。你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

2401_89221704的博客 1956

低供电电压CMOS偏置电路分析(有些类似于三支路电流源)

1、偏置电路原理图以及仿真结果 电路电流分析:Ip=Ip1=Ip2=Ip3,那么 Ip=12μnCoxWL(IpR−VTH)2 I_p=\frac{1}{2} μ_nC_{ox}\frac{W}{L} (I_{p}R-V_{TH})^2 Ip​=21​μn​Cox​LW​(Ip​R−VTH​)2 解出方程式即可得到参考电流及参考电压 2、电路电源抑制比PSRR分析 这里为了方便,小信号前都不加△ 首先做一个近似,由于gmRo>>1,直接将VDD变化导致的P3管漏级电压变化与VDD变化量做相等

qq_46579389的博客 2910

Unity游戏开发必备:C#时间戳与DateTime的高效转换(附性能对比测试)

本文深入探讨Unity游戏开发中C#时间戳与DateTime的高效转换方法,特别针对移动端性能优化提供实战解决方案。通过详细的代码示例和性能对比测试,帮助开发者掌握时间戳转换的最佳实践,提升游戏存档、事件同步等场景的处理效率。

time3的博客 649

当GO.db安装失败时,生物信息学新手应该知道的5个底层逻辑

本文为生物信息学新手提供了解决GO.db安装失败的5个关键底层逻辑,包括网络连接与镜像源设置、版本兼容性检查、依赖关系管理、SQLite存储机制理解以及调试技巧。特别针对Bioconductor的GO.db包安装问题,详细介绍了如何通过切换国内镜像、管理版本冲突和解决依赖问题来成功安装,帮助用户高效克服常见安装障碍。

weixin_29062823的博客 407

手机流畅的秘密:拆解LPDDR5X在骁龙8 Gen2平台上的电源与信号完整性设计

本文深入解析了LPDDR5X内存与骁龙8 Gen2处理器在旗舰手机中的协同设计,重点探讨了0.5V超低电压下的电源完整性设计以及8.5Gbps高速传输中的信号完整性挑战。通过详细的电源树架构、关键器件选型和布线策略分析,揭示了如何实现高性能与低功耗的完美平衡,为手机流畅体验提供硬件保障。

weixin_30235225的博客 484

php获取18年前的时间戳,PHP获取当前时间戳,当前时间、及解决时区问题

一、获取当前时间戳方法1:通过time函数time();方法2:通过$_SERVER中的REQUEST_TIME元素$_SERVER['REQUEST_TIME'];方法3:通过strtotime函数strtotime('now'));二、获取当前时间通过date函数格式化时间戳echo date('Y-m-d h:i:s', time());// 2016-12-31 05:07:05三、时区问...

weixin_42389030的博客 596

【华为OD机试真题】65、高矮个子排队 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

题目描述 >现在有一队小朋友,他们高矮不同,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。 >  我们现在希望小朋友排队,以"高" "矮" "高" "矮" 顺序排列,每一个高位置的小朋友要比相邻的位置高或者相等;每个 "矮" 位置的小朋友要比相邻的位置矮或者相等; >  要求小朋友们移动的距离和最小,第一个从“高"位开始排,输出最小移动距离即可。 >  例如,在示范小队{5,3,1,2,3}中, {5, 1, 3, 2, 3}是排序结果。 > 

KJ.JK 2100

C# winform Npgsql如何使用新的时间戳保存到数据库

首先确认你的项目已经安装了Npgsql库。如果没有安装,可以通过NuGet包管理器安装:深色版本:配置并打开一个到PostgreSQL数据库的连接。:构建一个SQL命令来插入包含时间戳的数据。

精通搬砖,资深技术砖家,在软件开发,人工智能,设备开发等领域都有研究。商业合作&交流学习可私信联系。 634

[网络安全提高篇] 一一九.恶意软件动态分析经典沙箱Cape的安装和基础用法详解

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文详细介绍恶意代码静态分析经典工具Capa的基础用法,以及批量提取静态特征和ATT&CK技战术,主要是从提取的静态特征Json文件中提取关键特征。这篇文章将详细讲解动态分析沙箱Cape,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。本文先介绍Cape沙箱的安装和基础用法,后续随着深入再分享。基础性文章,希望对您有帮助!

杨秀璋的专栏 1万+

智能预测性维护AI系统实战效率提升:AI应用架构师的技巧分享

在工业领域,预测性维护(Predictive Maintenance, PdM)是降低停机损失、优化维护成本的关键手段。然而,现有系统往往面临三大效率瓶颈数据处理延迟:工业设备产生的海量实时数据(如传感器、PLC)需传输至云端处理,导致预警滞后;模型推理效率:复杂深度学习模型(如ResNet、Transformer)在边缘设备上推理时间长,无法满足实时要求;落地集成困难:与企业现有ERP、MES、SCADA系统对接繁琐,导致“模型好用但业务不用”的尴尬。本文从架构、数据、模型、落地架构设计。

AI天才研究院 744

从电商超时订单到定时任务:C#时间戳的5个高频应用场景解析

本文深入解析C#时间戳在业务开发中的5个高频应用场景,涵盖电商订单超时处理、监控告警、日志分析与定时任务调度。通过对比秒级与毫秒级精度、使用DateTimeOffset规避时区陷阱,并提供高性能转换与分布式协调等实战代码,帮助开发者构建健壮的时间处理逻辑,提升系统稳定性与开发效率。

ice55的博客 255

学Simulink——基于风力发电系统的建模与仿真场景:基于自适应控制的风力发电系统输出功率调节

本文详细介绍了使用Simulink搭建风力发电系统自适应控制模型的完整流程。首先阐述了风速波动对电网的影响及自适应控制的优势,然后逐步指导创建Simulink项目、搭建系统结构(包括风速源、风轮机、发电机等模块),重点讲解了模型参考自适应控制器(MRAC)的设计步骤和参数设置方法。通过仿真分析验证了系统在风速变化时仍能保持输出功率稳定,展示了自适应控制的响应速度和鲁棒性。最后提出了引入深度学习预测、多变量控制等优化方向,为新能源领域工程师提供了实用的建模与仿真指导。

amy_mhd的博客 220

触发C#Button的双击事件

在C#中,Button是有DoubleClick事件的,只是它没有出现在事件列表中,而且.net也是把这个事件给"屏蔽"掉了,无论你双击一个按钮怎么快,也不会触发这个事件。 为了能够触发Button的双击事件,我们可以重载MouseDown事件,记录每次鼠标按下的时间,如果两次点击的时间足够近的话,就触发一次双击方法。 这样也大致能够达到双击的效果,我所采用的方法其实和这个类似,是继...

1269

Unity实战篇 | 教你怎样将Unity的启动Logo 设置成 自己制作的 帧动画

上一篇文章我们讲了怎样在不购买专业版的情况下自定义Unity的启动Logo。 那本篇文章就来介绍一下,怎样在去除默认Logo的前提下制作自己的启动动画!

努力前行,总会成为自己心中的那道光 6万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

从.NET Framework到.NET 8,我们踩了12年AOP坑——C# 13拦截器在SCADA系统中解决的4类“编译期不可见”故障

C# 13拦截器工业场景应用直击SCADA系统“编译期不可见”故障,通过编译期织入实现无侵入日志、权限、重试与异常熔断。适配.NET 8实时控制环境,零运行时开销,提升工业软件可靠性与可观测性,值得收藏。

FuncIsle的博客 201

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C#:根据应用名称,获取Windows日志

关于Windows日志的获取获取方式应用场景手动获取步骤说明图片说明自动获取程序代码 获取方式 应用场景 一般情况下,程序还没有结束之前,程序自带的日志系统会记录各种异常信息。但是在特殊情况下,程序会有闪退等情况,导致程序自带的日志系统无法记录闪退原因。因此,获取Windows系统日志去确认程序闪退等异常的原因则十分有用且必要。 手动获取 步骤说明 此电脑==》管理==》事件查看器==》Windows日志==》应用程序==》筛选当前日志==》根据应用名称进行筛选 图片说明 自动获取 程序代码 .

博客常用背景 2159

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

CC13x2/CC26x2 I2S音频开发:从寄存器配置到无线同步实战

I2S(Inter-IC Sound)总线是嵌入式音频系统中传输数字音频数据的标准接口,其核心原理在于通过位时钟(BCLK)、字时钟(WCLK)和主时钟(MCLK)实现音频采样数据的精准同步传输。该技术通过专用DMA控制器实现数据的高效搬运,将CPU从繁重的数据搬移任务中解放出来,专注于音频处理算法,从而在保证高音质的同时实现低延迟。在无线音频、智能家居和便携式设备等应用场景中,I2S是实现高质量音频采集与播放的关键。本文以TI CC13x2/CC26x2无线MCU为例,深入解析其I2S模块的寄存器配置、D

weixin_30919571的博客 530

C# Winform学习总结

1 将鼠标放在按钮上,出现提示文字1 添加控件ToolTip,然后打开按钮的属性,可以在最下面找到新添了一个项目叫Misc,里面有一个属性叫做ToolTip on <ToolTip控件的名字>,添加要提示的文字就好了。 2 https://bbs.youkuaiyun.com/topics/270033627?winzoom=1 ↩︎ ...

muxi_huang的博客 3648

以太网MAC硬核功能解析:流量控制与高精度时间戳实战

在嵌入式网络与工业控制领域,网络通信的实时性与确定性是核心挑战。其底层原理依赖于以太网MAC层的硬件机制,通过精细的流量调度与精准的时钟同步来保障。从技术价值看,这直接决定了系统的稳定性、低延迟与高可靠性。具体到工程实践,流量控制(Flow Control)通过PAUSE/PFC帧实现优先级业务的无损传输,而基于IEEE 1588(PTP)的高精度时间戳(Timestamping)技术则为分布式系统提供了亚微秒级的同步能力。这些硬件原生功能广泛应用于车载网络、工业自动化、高性能计算等对时序和可靠性要求严苛的

weixin_34277853的博客 448

C# 13拦截器在金融核心系统中的隐秘应用(证监会备案级合规拦截实践首次公开)

C# 13拦截器工业场景应用助力金融核心系统实现证监会备案级合规拦截。在交易风控、日志审计与敏感字段脱敏等关键环节,通过编译期静态注入实现零运行时开销、高确定性安全控制。已通过多家券商核心系统实测验证,值得收藏。

ByteGlow的博客 178
上一篇: DEV ComBoxEdit实现模糊检索数据
下一篇: C#当前线程不在单线程单元中,因此无法实例化ActiveX控件解决方法
xx~
xx~
博客等级 码龄8年 8375粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值