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

本文关键字:第一天 比较 何转换 转换 日期 | 更新日期: 2023-09-27 18:28:08

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

我编辑了我的问题来解释我的问题。很抱歉。

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

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

我的getfirstdayofstmonth()方法有问题,它总是减去1个月,而我希望它取当月的第一天。

我只是想比较一下它们是否是同一天和同一个月——年份并不重要。

所以我想比较一下这样的东西。26/12-在currentDay = 1/12时从文件time_was_send.txtgetfirstdayoflastmonth(currentDay)读取。

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

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{}
}

下面是getfirstdayofstmonth()方法:

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);
}

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

要获得每月的第一天,可以单独使用DateTimeclass方法和属性

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属性

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);

这样的东西会对你有所帮助。