gpt4 book ai didi

c# - 从类中返回日期

转载 作者:太空宇宙 更新时间:2023-11-03 17:49:40 27 4
gpt4 key购买 nike

我想要做的是让用户输入一个日期,并让一个类返回该月的最后一天。所以,我把它放在我的类模块中:

public static class StringExtensions
{
public static DateTime LastDayOfMonth(DateTime MyDate)
{
DateTime today = MyDate;
DateTime EOM = new DateTime(today.Year,today.Month,
DateTime.DaysInMonth(today.Year,
today.Month));
return EOM;
}
}

在我的代码隐藏中,我有这个:

DateTime LDOM = StringExtensions.LastDayOfMonth(txtCIT.Text);

我也试过像这样硬编码日期:

DateTime LDOM = StringExtensions.LastDayOfMonth('1/12/2016');

我遇到了这些错误:

Error 14 The best overloaded method match for 'ClientDPL.StringExtensions.LastDayOfMonth(System.DateTime)' has some invalid arguments

Error 15 Argument 1: cannot convert from 'string' to 'System.DateTime'

谁能看出我做错了什么?

最佳答案

您正在尝试将 String 参数传递给需要 DateTime 参数的方法。那么你需要parse你的值(value)第一:

var textCitValue = DateTime.Parse(txtCIT.Text);
DateTime LDOM = StringExtensions.LastDayOfMonth(textCitValue);

更好的方法是使用安全方法DateTime.TryParse永远不会抛出异常

DateTime textCitDateTime;
if(DateTime.TryParse(txtCIT.Text, out textCitDateTime))
{
DateTime LDOM = StringExtensions.LastDayOfMonth(textCitValue);
// your logic here
}
else
{
// handle invalid textbox date here
}

此外,您的命名不明确。您的 StringExtensions 类有一个不是扩展方法的方法,它使用 DateTime 作为参数。最好重命名你的类并更改 LastDayOfMonth 签名,如下所示:

public static class DateTimeExtensions
{
public static DateTime LastDayOfMonth(this DateTime date) { ... }
}

然后您可以将此方法作为 DateTime 公共(public)实例方法调用:

DateTime LDOM = textCitValue.LastDayOfMonth();

您还可以将方法签名更改为 public static DateTime LastDayOfMonth(string date) 但它会中断 single responsibility principle适合您的方法。

关于c# - 从类中返回日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35231612/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com