【问题标题】:Format Date and Time Textboxes格式化日期和时间文本框
【发布时间】:2016-01-05 22:17:43
【问题描述】:

我有两个文本框,一个用于日期,另一个用于时间。然后将输入到这些文本框中的值保存到数据库中。但是当我重新加载页面时,日期和时间已经重新格式化。日期显示为 10/10/2015 00:00:00,但它应该只是日期。时间显示为 19:00:00,但我不希望显示最后一个 00。

Lookups.CloseTime p = new Lookups.CloseTime(ID);

if (p != null)
{
    txtDate.Text = p.CloseDate.ToString();
    txtTime.Text = p.CloseTime.ToString();
}

对于数据库:

private DateTime? _CloseDate;
private TimeSpan? _CloseTime;
public DateTime? CloseDate
{
    get { return _CloseDate; }
    set { _CloseDate = value; }
}

public TimeSpan? CloseTime
{
    get { return _CloseTime; }
    set { _CloseTime = value; }
}

【问题讨论】:

  • CloseDate/CloseTime 是什么类型?
  • @fubo 关闭日期是 DateTime 并且 CloseTime 是 TimeSpan

标签: c# asp.net date time format


【解决方案1】:

您可以将DateTime.ToShortDateStringDateTime.ToString("d") 用于不带时间的DateTime,使用TimeSpan.ToString("hh':'mm") 用于不带秒的TimeSpan

txtDate.Text = p.CloseDate.ToShortDateString();
txtTime.Text = p.CloseTime.ToString("hh':'mm");

如果CloseDateNullable<DateTime>,则必须使用它的Value 属性:

txtDate.Text = p.CloseDate.HasValue ? p.CloseDate.Value.ToShortDateString() : "";

同样适用于TimeSpan?:

txtTime.Text = p.CloseTime.HasValue ? p.CloseTime.Value.ToString("hh':'mm") : "";

【讨论】:

  • 我不能将 ToShortDateString 用于 CloseDate,因为它会导致此错误:`'System.Nullable' 不包含 'ToShortDateString' 的定义并且没有扩展方法 'ToShortDateString' 接受可以找到“System.Nullable”类型的第一个参数(您是否缺少 using 指令或程序集引用?)`
  • 并使用 CloseTime.ToString("hh':'mm");导致此错误:方法 'ToString' 没有重载需要 1 个参数
  • 问题是您使用的是可以为空的日期时间。正如编辑建议的那样,改用 p.CloseDate.Value。
  • @user123456789 itsToString("hh:mm")
  • @user123456789:我已经编辑了我的答案,向您展示如何从可为空的对象中获取 Value
【解决方案2】:

使用.Date 只会为您提供带有零时间组件的日期部分。这是一个内置的 .NET 方法,可以保存任何定制的 ToString() 操作。

eg. DateTime.Now.Date

MSDN Link to DateTime.Date

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2017-04-12
    相关资源
    最近更新 更多