.Net DateTime到DOS日期32位转换
发布时间:2020-12-14 04:37:07 所属栏目:Windows 来源:网络整理
导读:我需要从32位Dos日期转换为.NET System.DateTime并再次返回.我正在使用下面的两个例程,但是当我来回转换它们时,它们会在几秒钟内完成.谁能明白为什么? public static DateTime ToDateTime(this int dosDateTime){ var date = (dosDateTime 0xFFFF0000) 16;
我需要从32位Dos日期转换为.NET System.DateTime并再次返回.我正在使用下面的两个例程,但是当我来回转换它们时,它们会在几秒钟内完成.谁能明白为什么?
public static DateTime ToDateTime(this int dosDateTime) { var date = (dosDateTime & 0xFFFF0000) >> 16; var time = (dosDateTime & 0x0000FFFF); var year = (date >> 9) + 1980; var month = (date & 0x01e0) >> 5; var day = date & 0x1F; var hour = time >> 11; var minute = (time & 0x07e0) >> 5; var second = (time & 0x1F) * 2; return new DateTime((int)year,(int)month,(int)day,(int)hour,(int)minute,(int)second); } public static int ToDOSDate(this DateTime dateTime) { var years = dateTime.Year - 1980; var months = dateTime.Month; var days = dateTime.Day; var hours = dateTime.Hour; var minutes = dateTime.Minute; var seconds = dateTime.Second; var date = (years << 9) | (months << 5) | days; var time = (hours << 11) | (minutes << 5) | (seconds << 1); return (date << 16) | time; } 解决方法
在ToDOSDate中,在存储在时间变量中之前,需要将秒数除以2. (秒<<< 1)左移,将秒乘以2.将其改为右移位((秒>> 1))除以2. 请注意,当dateTime中存在奇数秒时,无法避免在ToDOSDate中丢失秒.将秒数除以2的正确位移将始终降低最低有效位.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在windows和linux上编译
- windows – 如何阻止远程桌面由于不活动而关闭我的会话?
- windows – 如何从显示设备名称获取HMONITOR句柄?
- wnmp windows 2012 r2+php7.0+nginx1.14安装
- windows系统上安装mysql操作过程及常见错误处理
- WPF应用程序行为取决于Windows用户访问级别
- uwp – 如何使用Universal Windows App中的System.Net.Http
- Windows命令“date%s”的等价物是什么
- Microsoft SQL Server 2017安装和测试管理数据库实例
- 如何设置服务器支持.shtml类型文件
推荐文章
站长推荐
- 单元测试 – Windows Phone开发和单元测试
- active-directory – Windows bginfo显示A.D到期
- 在services.msc或windows服务控制台替代上过滤服
- 在windows server 2008 64位服务器上配置php环境
- WP7 - Runing App under the Locked Screen详述
- api – Windows 7中的Cards.dll
- windows-7 – Windows 7,开发人员的良好平台?
- row_number()在hql中的分区
- 在windows上编译32位和64位mono
- windows-installer – Techsmith Snagit的Window
热点阅读