3

ASP.NET ページには次のようなものがあります。

<asp:Label ID="MyDateTimeLabel" runat="server" 
     Text='<%# Eval("MyDateTime") %>' />

私はそれを次のようにフォーマットしたいと思います

... Eval("MyDateTime", "{0:d}") ... // Display only the date

MyDateTime の時間部分が 00:00:00 である場合に限ります。そうでなければ、このように:

... Eval("MyDateTime", "{0:g}") ... // Display date and time in hh:mm format

これは可能ですか、どうすればそれを行うことができますか?

事前にヒントをありがとう!

4

6 に答える 6

6

私はこれを私のコードビハインドに入れます:

// This could use a better name!
protected string FormatDateHideMidnight(DateTime dateTime) {
    if (dateTime.TimeOfDay == TimeSpan.Zero) {
        return dateTime.ToString("d");
    } else {
        return dateTime.ToString("g");
    }
}

そして、それを呼び出すように.aspxを変更します。

<asp:Label ID="MyDateTimeLabel" runat="server" 
     Text='<%# FormatDateHideMidnight((DateTime)Eval("MyDateTime")) %>' />

これを複数の場所で行う場合は、拡張メソッドを記述しDateTimeてそこにこのロジックを配置することを検討してください(おそらく、さまざまな形式を提供するための追加のパラメーターを使用するなど)。

于 2010-02-19T15:42:18.837 に答える
1

使用している.net言語については言及していません。VB.NETでは、次のインライン式を使用できます。

... Text='<%# Eval("MyDateTime", If(Eval("MyDateTime").TimeOfDay = TimeSpan.Zero, "{0:d}", "{0:g}")) %>'

私はC#でテストしませんでしたがIf(...)、三項演算子に置き換えて、アクセスする前に?:結果をにキャストすることでうまくいくと思います。EvalDateTimeTimeOfDay

于 2010-02-19T15:54:21.557 に答える
1

テストしませんでしたが、私の頭の上から:

マークアップで

<asp:Label ID="MyDateTimeLabel" runat="server" 
     Text='<%# FormatMyDateTime((DateTime)Eval("MyDateTime")) %>' />

コードビハインドで:

protected string FormatMyDateTime(DateTime date)
{
      // Do your if else for formatting here.
}
于 2010-02-19T15:39:11.860 に答える
0

aspxファイルで次のコードに置き換えるか、メソッドを作成してメソッドを呼び出して値を返すことができます。

<%
   DateTime dtTime = DateTime.Now;

    if (dtTime.TimeOfDay == TimeSpan.Zero)
        Response.Write(String.Format("{0:d}", dtTime));
    else
        Response.Write(String.Format("{0:g}", dtTime));
%>
于 2010-02-19T15:43:09.117 に答える
0

あなたがこれを探しているかどうかはわかりませんが、試してみる価値はあると思います。それがうまくいくことを願っています。

<%# String.Format(Eval("MyDateTime"),"{0:d}") %>

<%# String.Format(Eval("MyDateTime"),"{0:g}") %>
于 2010-02-19T15:39:02.883 に答える
0

日付部分だけを表示するには

<asp:Label id="lblExamDate" runat="server" Text='<%#Convert.ToDateTime(Eval("theExamDate.Date")).ToShortDateString()%>'></asp:Label>

時間部分のみを表示する

<asp:Label ID="lblStartTime" runat="server" Text='<%#Convert.ToDateTime(Eval("ExamStartTime")).ToShortTimeString()%>' />
于 2013-08-14T15:33:35.183 に答える