【问题标题】:Combining integers into a DateTime将整数组合成 DateTime
【发布时间】:2016-11-16 13:18:57
【问题描述】:

我有 3 个整数值,我正在尝试将它们组合起来以创建一个日期时间变量。我正在尝试这样做,因为我需要用户通过 datetimepicker 指定年份,然后在一个数组中我需要从该年第一个月的第一天开始的日期。

目前我有,

int b = 1;
int m = 1;
int y = dateTimePicker1.Value.Year;

DateTime newdate = new DateTime(b, m, y);

我尝试了各种不同的方法将整数组合在一起形成 2017 年 1 月 1 日。我知道当错误出现时整数保持正确的值,但新日期值是 01/01/0001 12:00:00:AM。

不知道为什么整数 y 从 2017 变成了 0001?

因此错误消息是,Year、Month 和 Day 参数描述了一个 不可表示的日期时间。

【问题讨论】:

    标签: c# datetime


    【解决方案1】:

    首先你需要改变参数顺序

     DateTime newdate = new DateTime(year, month, day);
    

    其次,您可以使用 DateTime.Parse 或 DateTime.TryParse 从字符串中获取日期对象

    【讨论】:

    • 您能否改进DateTime.ParseDateTime.TryParse 的格式,使其更易于阅读和识别为代码。除此之外+1
    【解决方案2】:

    您的参数顺序错误。

    顺序为yearmonthday

    var newDate = new DateTime(y, m, b);
    

    您正在尝试创建无效的日期 2017/1/1。

    MSDN page

    【讨论】:

    • @ZachRoss-Clyne - 你有这方面的参考吗?鉴于 ReSharper(例如)在建议我使用 var 而不是我觉得你的陈述难以相信的类型时没有做出这种区分。
    • @ZachRoss-Clyne 纯粹是偏好,不会对解决方案进行任何改进。
    • stackoverflow.com/a/4050566/1704725 只是让阅读更容易而已,因为它在字符上没有太大的差异,所以让它不那么容易阅读是很愚蠢的
    • @ZachRoss-Clyne 这个答案纯粹是某人的个人喜好,决不能决定什么是好的或坏的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2018-04-12
    • 2015-04-28
    相关资源
    最近更新 更多