c# - 创建一个只有月和日的日期时间,没有年份

标签 c# datetime

我正在 VS 中为共享点创建一个计时器作业,我想创建一个只有月份和日期的日期对象。这样做的原因是因为我希望这项工作每年在特定日期运行。

如果无法使用日期对象,那么您会怎么做呢?

这是我得到的:

DateTime value = new DateTime(2010, 1, 18);

最佳答案

好吧,您可以创建自己的类型 - 但 DateTime 始终 具有完整的日期和时间。您甚至不能使用 DateTime “只是一个约会” - 您最接近的是在午夜有一个 DateTime

尽管如此,您始终可以忽略年份 - 或者采用当前年份:

// Consider whether you want DateTime.UtcNow.Year instead
DateTime value = new DateTime(DateTime.Now.Year, month, day);

要创建自己的类型,您总是可以在结构中嵌入 DateTime,并代理 AddDays 等调用:

public struct MonthDay : IEquatable<MonthDay>
{
    private readonly DateTime dateTime;

    public MonthDay(int month, int day)
    {
        dateTime = new DateTime(2000, month, day);
    }

    public MonthDay AddDays(int days)
    {
        DateTime added = dateTime.AddDays(days);
        return new MonthDay(added.Month, added.Day);
    }

    // TODO: Implement interfaces, equality etc
}

请注意,您选择的年份会影响类型的行为 - Feb 29th 是否应该是有效的月/日值?这取决于年份......

就我个人而言,我不认为我为此创建一个类型 - 相反,我会有一个方法来返回“下次应该运行该程序”。

关于c# - 创建一个只有月和日的日期时间,没有年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7958879/

相关文章:

c# - 返回 View 后未调用 ASP.NET 索引方法

c# - MainWindow.xaml 打开时运行项目花费的时间太长 - WPF

c# - 如何将 Windows.UI.Composition 动画集成到 UWP MVVM Light 应用程序中

php - 难以以小时计算年龄

php - 检查来自 sql 的日期时间是否是今天

C# - Azure SSO token 过期引发错误

来自日、月、年的 Python 时间戳

类 DateInterval 的 php 对象无法转换为字符串

mysql - PHP : Parse all data from mysql where the 3rd and 4th digit of the id

c# - 打开受密码保护的演示文稿