我从数据库里读取了一个DateTime的类型 
要截取他的time部分 形式为小时:分钟  怎么做
然后又应该把他保存为什么类型 (我以后要比较大小还要显示出来)

解决方案 »

  1.   

    比较大小呢  string 怎么能比较大小啊
      

  2.   

    DateTime dt = new DateTime();
                dt = DateTime.Now;
                string time;
                time = dt.Hour + ":" + dt.Second;
                Console.WriteLine(time);
    希望对你有所帮助
      

  3.   

    你把它再转换成datetime类型进行比较不就行了?既然直接可以将datetime转成这种string类型,也可以在比较时还原回来。
      

  4.   

    “要截取他的time部分”这个概念就是 TimeSpan 类型要承载的对象。至于打印成什么字符串,使用这个 TimeSpan 类型的结果的 ToString 方法按你需要的格式格式化。
      

  5.   

    将两个时间之间的差值(例如一个时间与当天零时的差值)写成DateTime对象在概念上就错了,在使用这个对象的时候就会造成很多难以发觉或者难以解决的错误。
      

  6.   

    TimeSpan 就是存在这个问题    那用string好显示 但是不要比较大小
    有没有一个两全其美的办法呢
      

  7.   

    你把它再转换成datetime类型进行比较不就行了?既然直接可以将datetime转成这种string类型,也可以在比较时还原回来。我问的是这个哈~~
      

  8.   

    timeSpan 当然可以比较大小。我现在反而不清楚你到底想要对绝对的日期比较大小还是对相对的一段时间比较大小了?!
      

  9.   

    唉,输给你了!呜呜。你的话总是缺少严密性。“直接可以将datetime转成这种string类型”?可是你明明是截取其与凌晨的时间差,而不是恒等式那样的“转换”。你的做法根本不是转换,而是截取其中一部份转换成字符串。
      

  10.   

    噢 
    我大概要实现一个这样的功能
     我在座一个办公室考勤功能
    当用户登录的时候,我从数据库段读得一个datetime时间 ,我要把这个datetime时间的time部分提取出来,把他和18:00比较 如果大于18:00就迟到了
      

  11.   

    好吧,这样说吧。你得到字符串转换为日期时(例如DateTime.parse或者Convert.ToDateTime等等很多方法)通常只能得到 0年0月0日几点几分,或者1900年1月1日几点几分,因为它根本无法确定你到底是哪一天开始算起,不同的编译系统、日期的实现方式把日期的起点(整数0对应的是哪年哪月哪号)直接给你“转换”出来,但是肯定不是你想要的原来的那个日期。
      

  12.   

    if(youDateTime.TimeOfDay>(new TimeSpan(18,0,0))
    {
      //你迟到了,在这里被处理。
    }
      

  13.   

    DateTime.Parse(str).ToString("HH:mm");