格式化 TimeSpan 字符串

Posted

技术标签:

【中文标题】格式化 TimeSpan 字符串【英文标题】:Format the TimeSpan string 【发布时间】:2013-01-23 13:49:52 【问题描述】:

我有一个带有日历和 7 个标签的小型 C# 程序。当我选择一个日期时,标签会显示该周的日期和日期。

标签是使用TimeSpan 字符串填充的,我想做的是格式化这个字符串,以便它只显示没有时间的日期和日期。

这是我目前的代码:

        private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
        
            DateTime dTime = new DateTime();
            dTime = monthCalendar1.SelectionStart;
            dTime -= new TimeSpan((int)dTime.DayOfWeek, 0, 0, 0 );

            for (int i = 1; i < 8; i++)
            
                var dt = dTime.AddDays(i);
                lb[i].Text = dt.DayOfWeek + " : " + dt.Date;                         
                       
        

【问题讨论】:

你也可以这样使用 lb[i].Text =dt.Date.ToString("dd/MM/yyyy"); 【参考方案1】:

您可以拨打dt.Date.ToShortDateString()

【讨论】:

感谢您完成了这项工作。不尝试那个我觉得很愚蠢:s【参考方案2】:

您有多种选择。

DateTime 类型可以使用ToShortDateString() 方法

lb[i].Text = dt.DayOfWeek + " : " + dt.Date.ToShortDateString()

或者您可以为ToString("format") 方法提供格式以准确指定您希望它的外观。

lb[i].Text = dt.DayOfWeek + " : " + dt.Date.ToString("MM/dd/yyyy");

【讨论】:

我更喜欢第二种解决方案,看起来更灵活。 @Tacit:取决于你的需要。第一种解决方案具有适应用户文化的优势。例如,在法语中,月/日/年是不自然的,因为在法语中,日期是按日/月/年的顺序排列的。第一个解决方案将向法国用户显示日/月/年。【参考方案3】:

试试DateTime.ToShortDateString()方法;

将当前 DateTime 对象的值转换为其等效值 短日期字符串表示。

DateTime dt = DateTime.Now;
label8.Text = dt.Date.ToShortDateString());

您可以通过Custom Date and Time Format Strings了解更多详情

【讨论】:

以上是关于格式化 TimeSpan 字符串的主要内容,如果未能解决你的问题,请参考以下文章

将字符串解析为 TimeSpan

如何在 .NET 中使用自定义格式对 TimeSpan 对象进行 String.Format ?

WPF中TimeSpan的坑

在 MVC 控制器中将 Javascript 时间字符串转换为 DateTime 或 TimeSpan

.NET TimeSpan 的 T-SQL 检查约束?

char.IsWhiteSpace(str,num),TimeSpan