我有一个文本框,我必须在该texbox中显示当前年份的最短日期
这意味着: 假设我考虑选择current_time(09/11/2009) 那么(01/01/2009)应该在文本框中显示
等待您的回复
答案 0 :(得分:10)
您只想构建同一年的新DateTime
,并将其他参数设置为一(第一天和第一天)。
var currentDateTime = DateTime.Now; // or whatever else
var firstDayOfYear = new DateTime(currentDateTime.Year, 1, 1);
答案 1 :(得分:1)
修改强> 正如Noldorin指出的那样,最简单,最简洁的解决方案是:
var firstDayOfYear = new DateTime(DateTime.Today.Year, 1, 1);
我的回答:
这应该这样做。
var now = DateTime.Now
var firstDayOfYear = now.Subtract(TimeSpan.FromDays(now.DayOfYear - 1)).Date
编辑: 实际上这会更清洁一点:
var today = DateTime.Today
var firstDayOfYear = today.Subtract(TimeSpan.FromDays(today.DayOfYear - 1))
答案 2 :(得分:0)
我过去必须解决同样的问题。最后,我决定为DateTime类创建一个Extension Methods类来封装和测试虽然简单的功能。
public static class DateTimeExtensions
{
public static DateTime GetFirstDayOfYear(this DateTime date)
{
return new DateTime(date.Year, 1, 1);
}
}
现在我需要做的就是获得所需的日期
DateTime selectedDate = DateTime.Today;
DateTime firstDayOfYear = selectedDate.GetFirstDayOfYear();
答案 3 :(得分:-1)
假设您可以从文本框中获取DateTime对象(例如DateTime.Parse(...)),您可以这样做:
DateTime inputDate = DateTime.Parse(textBox.Text);
DateTime outputDate = new DateTime(inputDate.Year, 1, 1);