【问题标题】:Set a date variable that equals to previous month's full month设置一个日期变量,等于上个月的整月
【发布时间】:2017-11-20 11:53:12
【问题描述】:

这可能是一个愚蠢的问题。是否可以设置一个变量值来获取上个月的数据?例如,如果是 9 月 24 日,我想要从 8 月 1 日到 8 月 31 日的所有内容。因此,当前日期应该无关紧要。我在盘点报告中使用它。我目前使用这个:

var firstDayofPreviousMonth = DateTime.Today.AddMonths(-1);

报告在每月 1 日自动生成。所以我想,就从 1 个月前拉,但我的老板突然改变主意,想每天拉报告。

这有意义吗?如果您需要更多信息,请发表评论。

【问题讨论】:

    标签: c# datetime variables report dayofmonth


    【解决方案1】:

    以下是我使用的方法:

    public static DateTime GetStartOfLastMonth(DateTime dt)
            {
                var date = dt.AddMonths(-1);
                return new DateTime(date.Year, date.Month, 1, 0, 0, 0, DateTimeKind.Local);
            }
    
            public static DateTime GetEndOfLastMonth(DateTime dt)
            {
                var date = dt.AddMonths(-1);
                var daysInLastMonth = DateTime.DaysInMonth(date.Year, date.Month);
    
                return new DateTime(date.Year, date.Month, daysInLastMonth, 0, 0, 0, DateTimeKind.Local);
            }
    

    注意:根据您的情况,您可能希望将 GetEndOfLastMonth 更改为 23,59,59。由于我在日期中操作,这与此代码所在的库无关。

    【讨论】:

    • @JudithJoubert 只是通过 22 小时部分?
    • 谢谢我知道了。谢谢你。感谢你的帮助。 2017-10-31 11:59:59 PM2017-10-01 01:05:00 AM
    • 我只有 12 个代表(我刚刚开始这个),所以一旦我达到最后 3 个,我会支持你的答案。非常感谢,嘿
    【解决方案2】:
    DateTime refDate = DateTime.Now.AddMonths(-1);
    DateTime firstDayPreviousMonth = new DateTime(refDate.Year, refDate.Month, 1);
    DateTime lastDayPreviousMonth = new DateTime(refDate.Year, refDate.Month, DateTime.DaysInMonth(refDate.Year,refDate.Month));
    

    【讨论】:

    • 请解释你的答案。
    • 好像没看懂问题
    • 怎么可能在不理解的情况下回答问题?
    • 除了木炉,一切皆有可能! ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2012-04-01
    • 2017-03-28
    相关资源
    最近更新 更多