2011-03-03 131 views
0

我有一个查询就像我想从日期显示自定义格式的时间信息,如(1分06秒)。我有一个在数据库中的存档持续时间,当我绑定我的数据控制,然后在项目我想以上述格式显示(1分06秒),所以有可能吗?数据时间格式(持续时间)

+0

这个持续时间的最小值和最大值是多少?它会进入几个小时,几天和几个月吗?以及数据如何存储在数据库中。它是日期时间类型吗? – 2011-03-03 10:02:29

+0

这是分钟和秒 – Anil 2011-03-03 10:03:22

+0

是否存储在一个数据库列中,如果是,它是如何分开的。你能告诉我们持续时间是如何存储在数据库中的吗? – 2011-03-03 10:05:41

回答

0

给你的DateTime变量,你可以做到以下几点:

var rr = dt1.ToString("mm'min 'ss'sec'"); 

或者,如果你有一个时间跨度:

你需要使用一个时间跨度为这个。甲简单的方法如下:

var ts = new TimeSpan(0, 2, 30); 
    var result = ts.Minutes.ToString() + "min " + ts.Seconds.ToString() + "sec"; 

在本例中,我所设定的时间跨度变量为2分30秒。

或者,如果你有两个日期: 如果你有两个日期,你可以做一个diff,并获得时间跨度,并从那里使用的代码,我上面显示:

var dt1 = new DateTime(2011, 01, 01, 12, 01, 00); 
    var dt2 = new DateTime(2011, 01, 01, 12, 03, 30); 
    var diffTimeSpan = dt2.Subtract(dt1); 
    var r = diffTimeSpan.Minutes.ToString() + "min " + diffTimeSpan.Seconds.ToString() + "sec"; 
+0

只是为了澄清一点:Timespan是(int小时,int分钟,int秒)你可以从你的DateTime对象中提取信息 – 2011-03-03 10:09:02

+0

@ Uw你正确的概念 – 2011-03-03 10:14:07

+0

I认为你的第一个例子中的你的文字指示符需要放在每一个字母之前,即'\\ m \\ i \\ n'。如果你想表示块作为文字,你必须像我的min''类型的表达那样去做,我相信。另外你的TimeSpan应该使用内置的.ToString()格式,就像你的DateTime例子一样,它有点长/很难,否则很难扩展。使用.ToString格式,您可以将该格式设置为一个字符串常量,在需要时更改显示屏非常简单。 – mike 2011-03-03 10:24:18

1

您可以使用System.TimeSpan结构。它代表时间间隔。 MSDN

2

结帐这个文件 - http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

但是,假设你有一个DateTime对象,这样的事情应该做的伎俩:

var test1 = DateTime.UtcNow.ToString("m'min 's'sec'"); 

或者为TimeSpan

var test2 = TimeSpan.FromSeconds(123).ToString("m'min 's'sec'"); 

你可以很容易地添加小时/天/等。取决于你想要的确切格式。如果您的对象不是DateTime或TimeSpan对象,则必须执行一些自定义操作。