C# 检查日期等于C月的第一个日期

C# 检查日期等于C月的第一个日期,c#,C#,用户可以以MM\DD\YYYY格式输入任何日期、月份和年份,如2013年12月12日、2014年1月1日、2014年7月5日、2012年5月1日 如何检查日期是否为月份的第一个日期 如果用户条目不是每月的第一个日期,我想将该条目修改为每月的第一个日期。在我的例子中,我想要 2013年12月12日至2013年12月1日 2014年1月1日至2014年1月1日无变化 2014年7月5日至2014年7月1日 2012年5月1日至2012年5月1日无变化 谢谢 更新: OP显然改变了规格: DateTi

用户可以以MM\DD\YYYY格式输入任何日期、月份和年份,如2013年12月12日、2014年1月1日、2014年7月5日、2012年5月1日

如何检查日期是否为月份的第一个日期

如果用户条目不是每月的第一个日期,我想将该条目修改为每月的第一个日期。在我的例子中,我想要

2013年12月12日至2013年12月1日 2014年1月1日至2014年1月1日无变化 2014年7月5日至2014年7月1日 2012年5月1日至2012年5月1日无变化

谢谢

更新: OP显然改变了规格:

DateTime date = ... // your original date here...
if (date.Day != 1)
  date = new DateTime(date.Year, date.Month, 1).AddMonths(1);
让.AddMonths方法担心12月份的年份将要结束

更新: OP显然改变了规格:

DateTime date = ... // your original date here...
if (date.Day != 1)
  date = new DateTime(date.Year, date.Month, 1).AddMonths(1);

让.AddMonths方法来担心12月的年份滚动…

IMO,因为你有一个明确的格式,你希望从用户MM\DD\yyyyy获得,为什么不做一个简单的拆分并挖掘你的点击率:

string arbitDate = "4/3/2014";
string UsersFirstDay = arbitDate.Trim().Split(new String[] { "/" }, StringSplitOptions.RemoveEmptyEntries)[1].Trim();//index 1 is the DD part - according to your format
UsersFirstDay = (UsersFirstDay == "1") ? UsersFirstDay : "1";

依我看,既然你有一个明确的格式,你希望从用户MM\DD\YYYY那里得到,为什么不做一个简单的拆分并挖掘你的点击:

string arbitDate = "4/3/2014";
string UsersFirstDay = arbitDate.Trim().Split(new String[] { "/" }, StringSplitOptions.RemoveEmptyEntries)[1].Trim();//index 1 is the DD part - according to your format
UsersFirstDay = (UsersFirstDay == "1") ? UsersFirstDay : "1";

将您的日期传递到此功能:

public static void ConvertToFirstDate(ref DateTime dt){
    TimeSpan ts = dt.Subtract(new DateTime(dt.Year, dt.Month, 1));
    dt =  dt.AddDays(-ts.Days);
}

将您的日期传递到此功能:

public static void ConvertToFirstDate(ref DateTime dt){
    TimeSpan ts = dt.Subtract(new DateTime(dt.Year, dt.Month, 1));
    dt =  dt.AddDays(-ts.Days);
}

if date.Day==1有什么问题吗?你试过什么吗?在没有显示任何努力或代码的情况下,听起来你是在要求我们为你做这件事。让用户选择月份和年份如何?这样你就不会把date.Day==1和if有什么问题混淆了?你试过什么吗?在没有显示任何努力或代码的情况下,听起来你是在要求我们为你做这件事。让用户选择月份和年份如何?这样你就不会把他们搞糊涂了我想你没有抓住问题的关键,OP不一定总是想要当前月份的第一个,而是想要给定日期的当月第一个。你还可以使用DateTime构造函数创建一个特定的时间点:new DateTimeDateTime.Now.Year,DateTime.Now.month,1,等等@tnw-我想你错过了//或者你怎么得到的。日期的来源无关紧要。对示例来说,使用Now比编写输入更容易。@JamesCurran啊,我看到在我发表评论后,它在中被编辑了。好吧,看来@cjcurrie也误解了,所以我想是时候澄清一下了。我想你没抓住问题的重点,OP不一定总是想要当前月份的第一个,而是想要给定日期的当月第一个。您还可以使用DateTime构造函数创建一个特定的时间点:new DateTimeDateTime.Now.Year、DateTime.Now.month、1等@tnw-我想您错过了//或者以任何方式获得它。日期的来源无关紧要。对示例来说,使用Now比编写输入更容易。@JamesCurran啊,我看到在我发表评论后,它在中被编辑了。好吧,看来@cjcurrie也误解了它,所以我想是时候澄清一下了。我仍然觉得使用ref和不返回日期时间没有多大帮助。我想如果我这样做的话,它会保持dt的所有其他属性和字段不变。专家点评plz!我仍然觉得使用ref和不返回datetime没有多大帮助。我想如果我这样做的话,它会保持dt的所有其他属性和字段不变。专家点评plz!