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

如何计算两个时间差,具体到相差几天几小时几分

如题:在asp.net中如何计算两个时间差,具体到相差几天几小时几分(或者说相差几小时,如7.5小时,45小时。。。)?
如果date1="2009-12-30 15:56:39"
date2="2010-6-3 09:29:28"
那么date1和date2相差几天几小时几分(或者说相差几小时,如7.5小时,45小时。。。)?


我知道使用 DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
是返回两个日期之间的时间间隔。
但是interval 只能返回一个值,d或者w或者H
我现在想要实现的功能是返回两个时间的具体差,返回的形式如下:
 d &"天"h &"小时"m &"分"就是返回几天几小时几分钟 我想要这样表达出来!

哪位高手知道怎么实现的请指点下!
小妹在线等。。。。。万分感谢! --------------------编程问答-------------------- 帮顶!!
--------------------编程问答-------------------- google“TimeSpan”的用法 --------------------编程问答-------------------- TimeSpan --------------------编程问答-------------------- TimeSpan res = time1 - time2;

下面是你要的结果
res.Days
res.Hours 
res.Minutes
res.Seconds  --------------------编程问答-------------------- DateTime time1 = new DateTime(2008, 12, 12, 9, 0, 0);
DateTime time2 = new DateTime(2008, 12, 12, 11, 30, 0);
TimeSpan ts = time2 - time1;
 double d = ts.TotalMinutes / 60;
--------------------编程问答--------------------
引用 4 楼 findcaiyzh 的回复:
TimeSpan res = time1 - time2;

下面是你要的结果
res.Days
res.Hours 
res.Minutes
res.Seconds

yes --------------------编程问答--------------------
DateTime d1 =new DateTime(2004,1,1,15,36,05);
DateTime d2 =new DateTime(2004,3,1,20,16,35);
TimeSpan d3 = d2.Subtract(d1);
LbTime.Text = "相差:"
+d3.Days.ToString()+"天"
+d3.Hours.ToString()+"小时"
+d3.Minutes.ToString()+"分钟"
+d3.Seconds.ToString()+"秒";
--------------------编程问答-------------------- findcaiyzh,能说的具体些吗?
假如date1="2009-12-30 15:56:39"
date2="2010-6-3 09:29:28"
那么在asp.net中用TimeSpan,date1和date2相差几天几小时几分(或者说相差几小时,如7.5小时,45小时。。。)?具体该怎么写呢?多谢! --------------------编程问答--------------------

        Dim t As Date = "2010-05-02 10:35:5"
        Dim s As Integer = DateDiff(DateInterval.Second, t, Now)
        MsgBox(Int(s / 3600) & "小时" & Int((s Mod 3600) / 60) & "分" & s Mod 60 & "秒")
--------------------编程问答-------------------- 继续在线等。。。
我说的在详细点,现在数据库中的一个表中有两个字段,如date1="2009-12-30 15:56:39"
date2="2010-6-3 09:29:28",现在有另外一个字段要存date1和date2的具体相差几个小时的(如7.5,42。。。),如果在asp.net中怎么实现?
忘各位高手们不吝赐教!越详细越好,万分感谢!
--------------------编程问答-------------------- 唉,还是给你贴代码吧..........


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("date1");
            dt.Columns.Add("date2");
            dt.Rows.Add("2009-12-30 15:56:39","2010-6-3 09:29:28");
            TimeSpan  dtTemp=Convert.ToDateTime(dt.Rows[0]["date2"])-Convert.ToDateTime(dt.Rows[0]["date1"]);
            MessageBox.Show(dtTemp.Days  + "天" + dtTemp.Hours + "小时" + dtTemp.Minutes + "分" + dtTemp.Seconds+"秒");
        }
    }
}
--------------------编程问答-------------------- blues_zhao_yang,不好意思,我用的是asp.net,不是C# code,我是这样写的,如下:
        Dim time1 As DateTime
        Dim time2 As DateTime
        Dim res As TimeSpan
        Dim a As String

        time1 = "2009-12-30 15:56:39"
        time2 = "2010-6-3 09:29:28"

        res = "time2" - "time1"
        a = res.Hours()
可是res = "time2" - "time1"这一句不行啊,提示说“类型double的值无法转换为system.TimeSpan”,请高手再指点一下,谢谢!偶是菜鸟。
--------------------编程问答--------------------  

TimeSpan res = time1 - time2;

下面是你要的结果
res.Days
res.Hours 
res.Minutes
res.Seconds 
 Goolge一搜索 多的是! --------------------编程问答-------------------- 把引号去掉

res = time2 - time1
--------------------编程问答-------------------- 创建一个空页面,写如下代码


    protected void Page_Load(object sender, EventArgs e)
    {
        DateTime time1 = Convert.ToDateTime("2009-12-30 15:56:39");
        DateTime time2 = Convert.ToDateTime("2010-6-3 09:29:28");
        TimeSpan dtTemp = time2 - time1;
        Response.Write(dtTemp.Days + "天" + dtTemp.Hours + "小时" + dtTemp.Minutes + "分" + dtTemp.Seconds + "秒");
    }
--------------------编程问答-------------------- 去掉也不行,提示“运算符“-”不是不是为类型data定义的“ --------------------编程问答-------------------- 在asp.net中没有;的,我的是res = time2 - time1,而你的是res = time2 - time1;
--------------------编程问答-------------------- 你的语言是C# ,而我的是asp.net --------------------编程问答--------------------
引用 17 楼 xjtuwjy 的回复:
在asp.net中没有;的,我的是res = time2 - time1,而你的是res = time2 - time1;

你用的是VB --------------------编程问答-------------------- 我是想在asp.net的后台页面该怎么写?就是把如下代码改一下:
Dim time1 As DateTime
  Dim time2 As DateTime
  Dim res As TimeSpan
  Dim a As String

  time1 = "2009-12-30 15:56:39"
  time2 = "2010-6-3 09:29:28"

  res = "time2" - "time1"
  a = res.Hours()
--------------------编程问答--------------------   time  =   datediff( "s ",CDate( "2009-12-30 15:56:39 "),   CDate( "2010-6-3 09:29:28 "))
--------------------编程问答--------------------
引用 18 楼 xjtuwjy 的回复:
你的语言是C# ,而我的是asp.net

你的是vb
还有asp.net后台写的代码就是C#
asp.net不是语言- - --------------------编程问答-------------------- --------------------编程问答-------------------- 你先搞清楚语言是什么??
asp.net是开发环境不是语言
asp.net下的语言要么用C#要么用VB

        Dim t As Date = "2010-05-02 10:35:5"
        Dim s As Integer = DateDiff(DateInterval.Second, t, Now)
        Response.Write(Int(s / 3600) & "小时" & Int((s Mod 3600) / 60) & "分" & s Mod 60 & "秒")


        DateTime time1 = Convert.ToDateTime("2009-12-30 15:56:39");
        DateTime time2 = Convert.ToDateTime("2010-6-3 09:29:28");
        TimeSpan dtTemp = time2 - time1;
        Response.Write(dtTemp.Days + "天" + dtTemp.Hours + "小时" + dtTemp.Minutes + "分" + dtTemp.Seconds + "秒");


建个空页面,把代码复制到Page_Load里,两种语言的代码不都有了么 --------------------编程问答--------------------

        Dim time1 As DateTime
        Dim time2 As DateTime
        Dim res As TimeSpan
        Dim a As String

        time1 = "2009-12-30 15:56:39"
        time2 = "2010-6-3 09:29:28"

        res = time2 - time1
        a = res.Hours
--------------------编程问答-------------------- Dim time1 As DateTime
        Dim time2 As DateTime
        Dim res As TimeSpan
        Dim a As String

        time1 = "2009-12-30 15:56:39"
        time2 = "2010-6-3 09:29:28"

        res = time2 - time1
        a = res.Hours
--------------------编程问答--------------------
引用 18 楼 xjtuwjy 的回复:
你的语言是C# ,而我的是asp.net

看见这个我只能表示很无奈。。。 --------------------编程问答-------------------- lz 你要用的是vb 不是c# 。。asp.net 用的就是c#
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,