我正在尝试为课程创建这个ATM应用程序,我的代码一直在破碎。它运行正常,直到我到达这里,控制台显示“输入今天的日期然后立即中断。”
我在使用DateTime
格式时遇到问题,但找不到适合我所需程序的响应。它必须能够读取任何日期,只要您不从上一个日期回溯它。我只是想在继续之前尝试获取部分内容,但这个错误不允许我再往前走。
//For Marking First Date
private void getDate_1()
{
Console.WriteLine("Enter today's date (mm/dd/yyyy): ");
String mydate = Console.ReadLine();
date1 = Convert.ToDateTime(mydate);
dateflag = true;
}
//For Marking Last Date
private void getDate_2()
{
String date;
Console.Write("Enter Date: ");
date = Console.ReadLine();
date2 = Convert.ToDateTime(date);
// if (first_date.DayOfYear > last_date.DayOfYear)
}
答案 0 :(得分:3)
要防止区域设置对日期解析产生影响,请使用特定的转换格式。您还需要DateTime.TryParseExact
:
DateTime d;
if (!DateTime.TryParseExact(Console.ReadLine(), "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out d))
{
Console.WriteLine("An invalid date format was supplied.");
}
答案 1 :(得分:0)
private void getDate_1()
{
var flag = true;
while (flag)
{
Console.WriteLine("Enter today's date (mm/dd/yyyy): ");
String mydate = Console.ReadLine();
try
{
date1 = Convert.ToDateTime(mydate);
dateflag = true;
flag = false;
}
catch (Exception e)
{
Console.WriteLine("Wrong format, try again: ");
}
}
}
答案 2 :(得分:0)
您应该使用Datetime.Compare
方法
类似这样的事情
DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0);
int result = DateTime.Compare(date1, date2);