当前位置:编程学习 > C#/ASP.NET >>

在C#中怎样使Datetime型的数据变成13位数字

我要在C#中,使Datetime类型的数据变成13位数字。
比如说可以使一个时间变成:1302192000000。
我用DateTime time3 = new DateTime(2011, 5, 5);
            Console.WriteLine("时间一:"+time3.ToFileTimeUtc().ToString());
这种方法试过了,但是不行,不是我要的13位数字。
由时间类型变为数字后,程序还是可以判断这些数字表示的是什么时间。
请各位高手帮帮忙 --------------------编程问答-------------------- --------------------编程问答-------------------- DateTime.Now.ToString("yyyyMMddHHmmss"); --------------------编程问答-------------------- 九位行不行? --------------------编程问答-------------------- 是不是截了5位?

DateTime time3 = new DateTime(2011, 5, 5);
Console.WriteLine("时间一:" + (time3.ToFileTimeUtc() / 100000).ToString());
--------------------编程问答-------------------- 我算了算确实需要13位
年按照最大9999,需要二进制14位
月最大按照12,需要二进制4位
日最大31,需要二进制5位
小时最大23,需要二进制5位
分钟最大59,需要二进制6位
秒最大59,需要二进制6位
一共二进制40位,全部都是1的话,最大4398046511103,十进制一共13位 --------------------编程问答-------------------- 您那时间是这个2013年8月25日16点

            DateTime dt = new DateTime(2013, 8, 25,16,0,0);//加上时分秒
            long s = dt.ToFileTimeUtc();



--------------------编程问答-------------------- 以前玩过,这个简单,分别获取时分秒,分别存入数组,访问时可以调用数组,但是显示可以加到一起显示。也就是,你的时间各个部分在代码里分开的,而在用户界面端则合在一起显示。 --------------------编程问答--------------------
DateTime.Now.Ticks / 100000
--------------------编程问答--------------------
new DateTime(2011, 5, 5).Ticks/10000
--------------------编程问答--------------------
引用 5 楼 lizhibin11 的回复:
我算了算确实需要13位
年按照最大9999,需要二进制14位
月最大按照12,需要二进制4位
日最大31,需要二进制5位
小时最大23,需要二进制5位
分钟最大59,需要二进制6位
秒最大59,需要二进制6位
一共二进制40位,全部都是1的话,最大4398046511103,十进制一共13位


这也太浪费空间了。 --------------------编程问答--------------------
引用 10 楼 sp1234 的回复:
引用 5 楼 lizhibin11 的回复:

我算了算确实需要13位
年按照最大9999,需要二进制14位
月最大按照12,需要二进制4位
日最大31,需要二进制5位
小时最大23,需要二进制5位
分钟最大59,需要二进制6位
秒最大59,需要二进制6位
一共二进制40位,全部都是1的话,最大4398046511103,十进制一共13位


这也太浪费空间了。

你的不带秒. --------------------编程问答-------------------- 我写了一个

        static void Main(string[] args)
        {
            ulong x = Encode(DateTime.Now);
            Console.WriteLine("现在时间转换为" + x);
            Console.WriteLine("再转为时间" + Decode(x));
            Console.ReadLine();
        }
        static ulong Encode(DateTime dt)
        {
            ulong x = 0;
            x += (ulong)dt.Second;
            x += ((ulong)dt.Minute) << 6;
            x += ((ulong)dt.Hour) << 12;
            x += ((ulong)dt.Day) << 17;
            x += ((ulong)dt.Month) << 22;
            x += ((ulong)dt.Year) << 26;
            int y = (int)Math.Log(x, 2);
            x = x << (39 - y);
            x += (ulong)(39 - y);
            return x;
        }
        static DateTime Decode(ulong x)
        {
            int m = (int)(x % 4);
            DateTime dt = new DateTime((int)(x >> (26 + m)), (int)(x << (24 + 14 - m) >> 60), 
                (int)(x << (24 + 18 - m) >> 59), (int)(x << (24 + 23 - m) >> 59), 
                (int)(x << (24 + 28 - m) >> 58), (int)(x << (24 + 34 - m) >> 58));
            return dt;
        }
--------------------编程问答-------------------- 这个就是把秒都加上,绝对控制在十进制13位之内,能用到9999年。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,