Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 手动组合日期的各个部分_C# - Fatal编程技术网

C# 手动组合日期的各个部分

C# 手动组合日期的各个部分,c#,C#,好吧,我不太确定该怎么办。下面是一个场景 1)在web表单上,我们有3个下拉列表:月、日和年 2)年份始终是可选的(非必需) 3)如果客户输入月份和日期,而不是年份,我们希望将年份默认为1900 4)如果客户输入了全部3个,我需要拼凑一个日期时间来表示这一点。无论哪种方式,年份都会有一些内容…有效年份或1900(如果用户未选择年份) 因此,在我的代码背后,我不太确定如何设置所有这些。最终,我需要形成该日期,以便在将日期发送到DL update函数后,可以更新SQL 2008日期数据类型 因此,我

好吧,我不太确定该怎么办。下面是一个场景

1)在web表单上,我们有3个下拉列表:月、日和年

2)年份始终是可选的(非必需)

3)如果客户输入月份和日期,而不是年份,我们希望将年份默认为1900

4)如果客户输入了全部3个,我需要拼凑一个日期时间来表示这一点。无论哪种方式,年份都会有一些内容…有效年份或1900(如果用户未选择年份)

因此,在我的代码背后,我不太确定如何设置所有这些。最终,我需要形成该日期,以便在将日期发送到DL update函数后,可以更新SQL 2008日期数据类型

因此,我在代码隐藏方法中创建了一个DataTime变量,用于拾取用户在每个下拉列表中选择的值。不过我想在日期时间上没有二传者。第四年左右。所以我不能只做DateTime.year=“1900”或类似的事情

  • 将网页中的所有三条信息(年、月、日)读入INT变量
  • 如果为空,则将“年”替换为1900
  • 创建新的日期时间:

    DateTime myDate = new DateTime(year, month, day)
    
  • 我想就这些了

  • 将网页中的所有三条信息(年、月、日)读入INT变量
  • 如果为空,则将“年”替换为1900
  • 创建新的日期时间:

    DateTime myDate = new DateTime(year, month, day)
    

  • 我想这就是全部内容。

    连接为字符串,然后转换为日期时间。

    连接为字符串,然后转换为日期时间。

    你说得对,没有setter,但这些都可以在中设置。你可以这样做

    DateTime date = new DateTime(year.HasValue ? year.Value : 1900, month, day) 
    

    Int32是哪一年?

    您是对的,没有设置器,但这些都可以在中设置。你可以这样做

    DateTime date = new DateTime(year.HasValue ? year.Value : 1900, month, day) 
    

    其中year是Int32?

    有一个DateTime构造函数,它以年、月和日作为输入参数。您可以使用它并输入下拉列表中的值(如果未选择年份,则默认为1900)。

    有一个DateTime构造函数,它以年、月和日作为输入参数。您可以使用它并输入下拉列表中的值(如果未选择年份,则默认为1900)。

    事实上,在构建日期时间之后,也可以更改日期时间的年份,尽管这有点费劲:

    int yearsSinceNineteenHundred = date.Year - 1900;
    date = date.AddYears(-yearsSinceNineteenHundred);
    

    事实上,在构建日期时间之后,也可以更改日期时间的年份,尽管这有点费劲:

    int yearsSinceNineteenHundred = date.Year - 1900;
    date = date.AddYears(-yearsSinceNineteenHundred);
    

    坏主意!!您是否正确处理所有不同的国际日期格式?在法国等地,您的应用程序是否可以执行此操作?日本?同意这不是一条路。。。根本没有必要,而且容易出错,你在国际上做了多少工作?(a) 我们没有讨论工作的国际化(b)ToDateTime(String,IFormatProvider)有什么问题(来自MSDN),它使用指定的区域性特定格式信息将数字的指定字符串表示形式转换为等效的日期和时间。为什么要转换为字符串,然后,当您已经知道日期、月份和年份时,根据特定的区域性解析字符串?只需将参数传递给DateTime构造函数就可以很好地工作,处理速度更快,并且不太容易出错。而且,这只是一行代码。Meta-Knight-我不是说这是最好的方式,事实上@marc_s有最好的答案(我投了票)。。。。然而,我的建议确实有效,而且是正确的,并没有理由投反对票。在我看来,说“这个答案没用”是错误的。这个主意不好!!您是否正确处理所有不同的国际日期格式?在法国等地,您的应用程序是否可以执行此操作?日本?同意这不是一条路。。。根本没有必要,而且容易出错,你在国际上做了多少工作?(a) 我们没有讨论工作的国际化(b)ToDateTime(String,IFormatProvider)有什么问题(来自MSDN),它使用指定的区域性特定格式信息将数字的指定字符串表示形式转换为等效的日期和时间。为什么要转换为字符串,然后,当您已经知道日期、月份和年份时,根据特定的区域性解析字符串?只需将参数传递给DateTime构造函数就可以很好地工作,处理速度更快,并且不太容易出错。而且,这只是一行代码。Meta-Knight-我不是说这是最好的方式,事实上@marc_s有最好的答案(我投了票)。。。。然而,我的建议确实有效,而且是正确的,并没有理由投反对票。在我看来,说“这个答案没有用”是错误的。我忘了加上生日本身是可选的。也就是说,如果他们没有输入这三个字段中的任何一个,那么我需要用1900年填充DateTime,但是月份和日期呢?我可以为SQL Server设置什么样的默认值?我忘了添加生日本身是可选的。也就是说,如果他们没有输入这三个字段中的任何一个,那么我需要用1900年填充DateTime,但是月份和日期呢?我可以为SQL Server设置什么样的默认值?我想您需要将其更改为
    year.HasValue?year.Value:1900
    ,自year.Value返回一个
    int
    ,您不能对整数(
    year.Value???
    )执行
    null
    检查。我如何将日期默认为1990年,但不输入日期和月份…嗯,不是什么,必须有一些内容,但用户不需要输入任何出生日期。如果是这样的话,那么我需要给SQL一些东西…一个以1900为年份的假日期。我想你需要把它改成
    year.HasValue?year.Value:1900
    ,自year.Value返回一个
    int
    ,您不能执行
    null
    检查