用户表里面有过期时间,注册时间,上次登录时间,登录次数,在线时长,余额等用户相关信息,其中前三个时间在数据库里匀用数字类型来表示,并非时间类型,需要转换,如何用C#实现添加功能

解决方案 »

  1.   

    几位数字?如果是长整形,直接记录时间的Tick即可DateTime dateTime = new DateTime([取出来的数字])
    //存入时间时:
    [数字] = dateTime.Tick;如果只是整形,估计你要想办法进位。
    比如用一个接近一点的时间来做起点。这个时间值作为系统常量。
    数据库存当前时间到系统那个时间的间隔的秒数。这样整形起码能存一百多年的时间(但只能精确到秒)DateTime SYS_DATETIME_START = new DateTime(2011, 01, 01);
    DateTime dateTime = SYS_DATETIME_START.AddSeconds([取出来的数字]);//存入时间时:
    [数字] = (int)(dateTime - SYS_DATETIME_START).TotalSeconds;
    但是如果可以的话,还是推荐改数据库。因为这样底层才不会有太多逻辑。
      

  2.   

    登录次数想必你会做,就是登录的时候+1在线时间 这个如果用户不点击退出按钮的话,我是不知道在线时长的,汗一个,要用的话就是session监听看session是否销毁我这里有个存储过程,是设置上次登录时间的,你参考一下CREATE proc [dbo].[last_end_login]
    --参数
    (
    @name nvarchar(50)
    )
    as
    begin
    --显示定义并开始一个事务
    begin tran
    --insert into ....
    declare @last datetime,@end datetime,@id int
    select @last=lastlogin,@end=endlogin,@id=x_uid from x_user where x_uname=@name
    update x_user set lastlogin=@end,endlogin=getdate() where x_uid=@id
    select @last
    select @id
    select @end
    if @@error<>0
    begin
    rollback transaction
    end--如果操作执行正确,则提交事务
    commit transactionend
    GO
      

  3.   

    时间就强制转换吧 DateTime.Parse()
      

  4.   

    [code=C#]Convert.ToDateTime(时间的字段)code]
      

  5.   

    也可以用Datetime.Now.ToString("yyyyMMddhhmmss"),然后截取时间
      

  6.   

    注册时间,是一个数字是从1970年到现在秒数,用javascript可以获得(javascript中使用的是毫秒数,相差1000),如today = new Date();document.write("现在是:",today.getTime()); 也可设置时间  today.setTime(1124453309750);document.write("所设时间年份是:",today.getYear()),也就是这样的数字(1124453309750)!