如何转换日期并将其与月的第一天进行比较?

时间:2015-12-28 04:25:12

标签: c# datetime

编辑:(对不起,英语不是我的主要语言,我真诚地向所有阅读此问题的人道歉。)

我编辑了我的问题以解释我的问题。对不起。

我想比较两天。当我向其添加数据并将日期保存在一个文件time_was_send.txt中时。

然后它应该与当月的第一天进行比较。如果确实如此,它将执行方法SendMail.sendDailyMail

我遇到getfirstdayoflastmonth()方法的问题,它总是减去1个月,而我希望它在当月的第一天。

我只想比较它们是否在同一天和月份 - 这一年并不重要。

所以我想比较这样的事情。 26/12 - 在time_was_send.txt时从文件getfirstdayoflastmonth(currentDay)currentDay = 1/12读取。

为了帮助您理解,这是我的代码,

string path = "C:\\time_was_send.txt";
string timeFromFile = ReadFromFile(path);
DateTime m_timeFromFile = DateTime.ParseExact(timeFromFile, "dd-MM-yyyy", null);
string s = now.ToString("dd-MM-yyyy");
DateTime timeNow = DateTime.ParseExact(s, "dd-MM-yyyy", null);

if (m_timeFromFile == procedureMethod.getfirstdayoflastmonth(timeNow))
{
    try
    {
        SendMail.sendDailyMail(listXML);
    }
    catch{}
}

这是getfirstdayoflastmonth()方法:

public static DateTime getfirstdayoflastmonth(DateTime time)
{
    return new DateTime(time.AddMonths(-1).Year, time.AddMonths(-1).Month, 1);
}

更新1: 我解决了我的问题。 在if()语句中,我添加.Day.Month进行比较。 有用。感谢所有帮助过我的人。

if (m_timeFromFile.Day == procedureMethod.getfirstdayoflastmonth(timeNow).Day && m_timeFromFile.Month == procedureMethod.getfirstdayoflastmonth(timeNow).Month)
{
    try
    {
        SendMail.sendDailyMail(listXML);
    }
    catch{}
}

我已将AddMonths(-1)修改为AddMonths(0)

public static DateTime getfirstdayoflastmonth(DateTime time)
{
    return new DateTime(time.AddMonths(-1).Year, time.AddMonths(0).Month, 1);
}

2 个答案:

答案 0 :(得分:0)

要获得该月的第一天,您可以使用DateTime class方法和属性单独

DateTime dt = DateTime.Now; //change this to any date you want
DateTime firstDayOfMonth = dt.AddDays(1-dt.Day); //the trick is here, minus the DatetTime by the current day (of month) + 1, you necessarily get the first day of the month
DayOfWeek dow = firstDayOfMonth.DayOfWeek; //this is the first day of the month (this month's first day is Tuesday)

如果您需要每月的第一天,请使用firstDayOfMonth。如果您需要当天的星期几,请使用dow。如果您想将firstDayOfMonth与其他DateTime进行比较但只对比较日期感兴趣,请执行以下操作:

firstDayOfMonth.Date == someOtherDays.Date

如果您还需要使用时间,可以查看TimeOfDay

基本上,尝试了解有关DateTime类方法和属性的更多信息。这个课程真的很方便用于你的任务!

修改:要比较日期和月份(但不是年份),请使用DateTime.DayDateTime.Month属性

答案 1 :(得分:0)

DateTime dateTime = DateTime.Now;

DateTime firstDayOfMonth = new DateTime(dateTime.Year,dateTime.Month,1);

if (firstDayOfMonth.DayOfWeek.Equals(dateTime.DayOfWeek))

    MessageBox.Show("The day is matching with first day of the month" + dateTime.DayOfWeek);

这样的事情可以帮助你。