我可以使用一个检查是真还是假的函数,并将我的口头语发送给其他班级?
我试过了:
public class Func
{
public static bool CheckDate(string number)
{
string new_number = number.ToString();
if (new_number.Length==8)
{
string yyyy = new_number.Substring(0, 4);
string mm = new_number.Substring(4, 2);
string dd = new_number.Substring(6, 2);
return true;
}
else
{
return false;
}
}
}
我想将口头yyyy
,mm
,dd
发送到我的Program.cs
课程。
我该怎么办?
答案 0 :(得分:7)
不要重新发明轮子,使用专门为此目的而构建的DateTime.TryParseExact
方法。在处理.NET框架中的日期时忘记正则表达式和子字符串:
public static bool CheckDate(string number, out DateTime date)
{
return DateTime.TryParseExact(number, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
}
现在你可以看到定义CheckDate
变得有点无意义,因为它已经存在于BCL中。您只需使用它:
string number = "that's your number coming from somewhere which should be a date";
DateTime date;
if (DateTime.TryParseExact(
number,
"dd/MM/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out date
))
{
// the number was in the correct format
// => you could use the days, months, from the date variable which is now a DateTime
string dd = date.Day.ToString();
string mm = date.Month.ToString();
string yyyy = date.Year.ToString();
// do whatever you intended to do with those 3 variables before
}
else
{
// tell the user to enter a correct date in the format dd/MM/yyyy
}
更新:
由于我在评论部分得到了一条评论,我实际上没有回答这个问题,你可以使用与我推荐的方法类似的方法。但是,请保证,你永远不会写这样的代码,这只是为了说明TryXXX模式。
定义模型:
public class Patterns
{
public string DD { get; set; }
public string MM { get; set; }
public string YYYY { get; set; }
}
然后修改CheckDate方法,以便它发送一个out参数:
public static bool CheckDate(string number, out Patterns patterns)
{
patterns = null;
string new_number = number.ToString();
if (new_number.Length == 8)
{
Patterns = new Patterns
{
YYYY = new_number.Substring(0, 4),
MM = new_number.Substring(4, 2),
DD = new_number.Substring(6, 2)
}
return true;
}
else
{
return false;
}
}
你可以这样使用:
string number = "that's your number coming from somewhere which should be a date";
Patterns patterns;
if (CheckDate(numbers, out patterns)
{
string dd = patterns.DD;
string mm = patterns.MM;
string yyyy = patterns.YYYY;
// do whatever you intended to do with those 3 variables before
}
else
{
// tell the user to enter a correct date in the format dd/MM/yyyy
}
答案 1 :(得分:0)
CheckDate
功能的目的是检查日期是否有效。不要引入蹩脚的副作用:编写另一个实际将你的东西发送到你想要的对象的函数。
如果要检查字符串是否为日期,请在CheckDate
中执行。
如果您知道某个字符串是日期,请通过此类ExtractDateElem
函数从中提取您想要的日期元素,但请不要产生任何副作用。
答案 2 :(得分:-1)
你必须声明你的变量如下......
public static string yyyy;
public static string mm ;
public static string dd ;
或
protected static string yyyy;
protected static string mm ;
protected static string dd ;
根据您的需要,取决于 program.cs 文件的位置......