问:
首先,在数据写入数据库的时候,我用sql的getdate()直接将写入数据时的时间写到了数据库中。
然后,我将数据邦定到datalist,读出数据库中指定的某些数据项,这个时候我想要对时间进行格式的限制,比如写入的时间为2003-1-19 18:02:00,我需要显示的时间格式为2003-1-19。
如何实现??
______________________________________________________________________________________________
答1:
下面的示例演示用不变量 DateTimeFormatInfo 设定 DateTime 值的格式的不同方法。
[Visual Basic]
Option Explicit
Option Strict
Imports System
Imports System.Globalization
Public Class MainClass
Public Shared Sub Main()
Dim dt As DateTime = DateTime.Now
Dim myformat() As String = {"d", "D", _
"f", "F", _
"g", "G", _
"m", _
"r", _
"s", _
"t", "T", _
"u", "U", _
"y", _
"dddd, MMMM dd yyyy", _
"ddd, MMM d ""'""yy", _
"dddd, MMMM dd", _
"M/yy", _
"dd-MM-yy"}
Dim mydate As String
Dim i As Integer
For i = 0 To myformat.Length - 1
mydate = dt.ToString(myformat(i), DateTimeFormatInfo.InvariantInfo)
Console.WriteLine(String.Concat(myformat(i), " :", mydate))
Next i
' Output.
'
' d :08/17/2000
' D :Thursday, August 17, 2000
' f :Thursday, August 17, 2000 16:32
' F :Thursday, August 17, 2000 16:32:32
' g :08/17/2000 16:32
' G :08/17/2000 16:32:32
' m :August 17
' r :Thu, 17 Aug 2000 23:32:32 GMT
' s :2000-08-17T16:32:32
' t :16:32
' T :16:32:32
' u :2000-08-17 23:32:32Z
' U :Thursday, August 17, 2000 23:32:32
' y :August, 2000
' dddd, MMMM dd yyyy :Thursday, August 17 2000
' ddd, MMM d "'"yy :Thu, Aug 17 '00
' dddd, MMMM dd :Thursday, August 17
' M/yy :8/00
' dd-MM-yy :17-08-00
End Sub 'Main
End Class 'MainClass
[C#]
using System;
using System.Globalization;
public class MainClass {
public static void Main(string[] args) {
DateTime dt = DateTime.Now;
String[] format = {
"d", "D",
"f", "F",
"g", "G",
"m",
"r",
"s",
"t", "T",
"u", "U",
"y",
"dddd, MMMM dd yyyy",
"ddd, MMM d /"'/"yy",
"dddd, MMMM dd",
"M/yy",
"dd-MM-yy",
};
String date;
for (int i = 0; i < format.Length; i++) {
date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo);
Console.WriteLine(String.Concat(format[i], " :" , date));
}
/** Output.
*
* d :08/17/2000
* D :Thursday, August 17, 2000
* f :Thursday, August 17, 2000 16:32
* F :Thursday, August 17, 2000 16:32:32
* g :08/17/2000 16:32
* G :08/17/2000 16:32:32
* m :August 17
* r :Thu, 17 Aug 2000 23:32:32 GMT
* s :2000-08-17T16:32:32
* t :16:32
* T :16:32:32
* u :2000-08-17 23:32:32Z
* U :Thursday, August 17, 2000 23:32:32
* y :August, 2000
* dddd, MMMM dd yyyy :Thursday, August 17 2000
* ddd, MMM d "'"yy :Thu, Aug 17 '00
* dddd, MMMM dd :Thursday, August 17
* M/yy :8/00
* dd-MM-yy :17-08-00
*/
}
}
______________________________________________________________________________________________
答2:
这个我知道,问题是我从数据库中直接邦定的阿,显示的时候用的
<%# DataBinder.Eval(Container.DataItem, "updatatime") %>
但是这样就不能满足我的需要,我的意思就是取出数据的时候,对每个数据都有一个同样的格式的要求
______________________________________________________________________________________________
答3:
暂时有一个方案可以解决——
select convert(char(10),updatatime,126) as updatetime from Content order by Updatatime desc
______________________________________________________________________________________________
答4:
<%# databinder.Eval(Container.dataitem,"addtime","{0:d}") %>
______________________________________________________________________________________________
答5:
在数据库中制作一个自定义函数就行了:
CREATE FUNCTION ShortDateTime (@DATE datetime)
RETURNS Varchar(11)
AS
BEGIN
DECLARE @ShortDateTime Varchar(11)
Set @ShortDateTime = @ShortDateTime + Convert(varchar(4),Year(@DATE)) + '-'
if Month(@DATE) <10
Set @ShortDateTime = @ShortDateTime + '0' + Convert(varchar(1),Month(@DATE)) + '-'
else
Set @ShortDateTime = @ShortDateTime + Convert(varchar(2),Month(@DATE)) + '-'
if Day(@DATE)<10
Set @ShortDateTime = '0' + Convert(varchar(1),Day(@DATE))
else
Set @ShortDateTime = Convert(varchar(2),Day(@DATE))
RETURN(@ShortDateTime)
END
使用的时候这样写就ok了
select dbo.ShortDateTime(dbo.fcsF1Master.RequestedDate) as RequestedDate from fcsuser
______________________________________________________________________________________________
答6:
回楼上的,你的做法和我的临时解决方案有什么区别?都是将日期型转换为字符,这是我觉得不爽的地方
______________________________________________________________________________________________
答7:
<%# databinder.Eval(Container.dataitem,"addtime","{0:d}") %>
______________________________________________________________________________________________
答8:
能不能详细解释一下"{0:d}"的具体东西,也就是针对不同要求的格式限制。