`
touchinsert
  • 浏览: 1289744 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

.Net中的DataTime类型 和 time_t类型转换

 
阅读更多

今天碰到一个问题:数据库表中一个记录时间的FIELD是用time_t类型,也就是long类型存储的,需要转换为yyyy-MM-dd HH:mm:ss格式显示到界面上。

当初用time_t类型大概是为了提高存取效率,但现在却给我留了个麻烦。如果开发工具还用VC当然就简单了,有MFC的CTime类,也可以用tm等结构做转换。但问题是现在要用c#,一个我还不大会用的家伙……。

上网查了查,有个DateTime的时间类可用。值范围在0001-01-01 0:0:0 ~9999-12-31 23:59:59内(晕,人类能生存到公元9999年?)表示的也还是格林威治时间。类的构造方法中有一个刚好是用long类型做参数,我把2006-8-2 0:0:0的time_t值1154448000仍了进去。代码是这样的:

long lT = 1154448000;

DateTime date = new DateTime( lT );

date.ToLocalTime(); //从格林威治转换为本时区的时间

string strTime = dT.ToString(“yyyy-MM-dd HH:mm:ss”);

运行后一看 时间是0001-01-01 00:01:55,差了两千多年。想了想可能有两个问题:上time_t的起始时间 1970-1-1 0:0:0,这个基准时间大概得加进去;另外查了下MSDN DateTime是用 100 毫微秒为计量单位,而time_t的计量单位是秒,大概还要乘上 1后面多少0 才对。于是我改了下代码:

long lT = 1154448000;

lT *= 100000000

DateTime date = new DateTime(1970,1,1,0,0,0);

TimeSpan ts = new TimeSpan( lT );

date.AddTicks( ts );

date.ToLocalTime(); //从格林威治转换为本时区的时间

string strTime = dT.ToString(“yyyy-MM-dd HH:mm:ss”);

运行后发现时间 是1970-1-1 0:0:0,也就是说new DateTime后面的语句都白写了,郁闷。又仔细看了看AddTicks和ToLocalTime方法,是有返回值的,好吧,返回值分别都赋值给Date。再运行,呵呵,时间总算正常了。一大堆代码就实现这么个微不足道的要求,感觉很不爽,不行,得再省省。我在调试模式下把DateTime(1970,1,1,0,0,0)的long值copy出来,这就好办了。最终的实现代码是:

long lT = 1154448000;

lT = lT * 100000000 + 621355968000000000;

DateTime date = new DateTime(lT);

date = date.ToLocalTime();

string strTime = dT.ToString(“yyyy-MM-dd HH:mm:ss”);

分享到:
评论

相关推荐

    oracle中Datatime类型直接输入方法

    告诉你oracle中Datatime类型直接输入方法,告诉你oracle中Datatime类型直接输入方法

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    转换变量类型函数: 转换为字符串:Convert.ToString() 转换为数字:Convert.ToInt64(),Convert.ToInt32(),Convert.ToInt16() 是按照数字位数由长到短 转换为日期:Convert.ToDateTime() ________________________...

    C#、.Net中把字符串(String)格式转换为DateTime类型的三种方法

    主要介绍了C#、.Net中把字符串(String)格式转换为DateTime类型的三种方法,本文总结了Convert.ToDateTime(string)、Convert.ToDateTime(string, IFormatProvider)、DateTime.ParseExact()三种方法,需要的朋友可以参考...

    ASP.NET中获取系统时间

    在c# / ASP.net中我们可 以通过使用DataTime这个类来获取当前的时间。通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04)、时间 (12:12:12)、日期+时间(2008-09-04 12:11:10)等。

    C#(ASP.NET)DateTime日期类型格式化显示

    3.用String类转换日期显示格式: String.Format( "yyyy-MM-dd ",yourDateTime); 4.用Convert方法转换日期显示格式: Convert.ToDateTime("2005-8-23").ToString ("yyMMdd",System.Globalization.DateTimeFormatInfo....

    解决python写入mysql中datetime类型遇到的问题

    在mysql数据库中,有一个datetime类型的字段用于存储记录的日期时间值。python程序中有对应的一个datetime变量dt。 现在需要往mysql数据库中添加记录,每次添加时,将datetime型变量dt写入mysql数据库tablename表中...

    asp.net时间格式大全

    在c# / ASP.net中我们可以通过使用DataTime这个类来获取当前的时间。通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04)、时间(12:12:12)、日期+时间(2008-09-04 12:11:10)等。

    mysql时间类型对应的java类型1

    Mysql 与 java 的时间类型 MySql的时间类型有 Java中与之对应的时间类型 datejava.sql.Date Datetimejava.sql

    Cstring 和Time之间的相互转换

    简单的时间控件获取值,以及CString 和Time之间的相互转换

    阿里巴巴API开发sdk .net平台

    1.确认安装有Visual Studio或IIS,安装.net Framawork。 2.将项目导入Visual Studio或部署到IIS服务器,或者将项目拷贝到D盘,点击dotnethelloworld.sln打开项目。 3.配置CERT CODE Signature.cs中将code设置成自己...

    时间字符串转换成日期对象datetime的方法

    您可能感兴趣的文章:sql语句中如何将datetime格式的日期转换为yy-mm-dd格式将WMI中的DateTime类型转换成VBS时间的函数代码LINQ字符串向datetime 转换时失败的处理方法Sql中将datetime转换成字符串的

    sql中的smailint.datatime.nchar数据类型

    关于sql数据类型的详细介绍,绝对经典,记得要认真看啊,对于新手来说是个不错的选择哦

    易贝网站 ASP.NET

    1.用户模型里的生日字段有bug,当将其改为其他数据类型的字段时,就提示,不能转换成datatime类型,所以这个字段应该设置为不能修改,或只能用日期类型的控件 2.模型字段可以上下移动 3.完成升级程序,可及时升级到...

    python中关于时间和日期函数的常用计算总结(time和datatime)

    复制代码 代码如下:import datetime,timenow = time.strftime(“%Y-%m-%d %H:%M:%S”)print nownow = datetime.datetime.now()print now 2.获取上个月最后一天的日期(本月的第一天减去1天) 复制代码 代码如下:last =...

    datatime.zip

    时间日期控件,已经中文化了,简单清爽~ $(".form_datetime").datetimepicker({ ... format: "•yyyy/mm/dd hh:ii:ss", todayBtn:1, todayHighlight:1, autoclose:1, pickerPosition:'bottom-left' ...

    C#中常用的DataTime方法的总结,包括一些SQL的函数

    C#中常用的DataTime方法的总结,包括一些SQL的函数

    datetime时间格式转换大全

    datetime类型的日期转化成年月日或其他格式方法,例如DateTime.Now.ToShortTimeString() DateTime dt = DateTime.Now; dt.ToString();//2005-11-5 13:21:25 等

    Android的SQLite中DateTime类型数据的存取问题

    Android的SQLite中DateTime类型数据的存取问题

    使用python将时间转换为指定的格式方法

    时间处理是在进行数据挖掘时很重要的一个方面,在参加比赛的...可以首先把字符串转换成一个datatime类型,然后用strftime()把datatime类型的时间转换为需要的格式 >>from datetime import datetime >>time_str = 201

    图书管理系统数据库表设计.docx

    price 定价 Numeric(10,2) b_author 作者 nvarchar(20) b_typeid 类型编号 int Foreign Key b_intime 入库时间 DataTime b_synopsis 图书简介 Nvarchar(500) b_state 图书状态 bit 0--借出,1--没有借出 b_photo ...

Global site tag (gtag.js) - Google Analytics