求助关于时间日期格式

sicold 2009-05-27 03:59:47
有个计算时间日期格式的程序
static void Main()
{
start:
Console.Write("请按规定的格式输入年月日(2006_7_16): ");
Console.Write("请输入年份 ");
int year = Convert.ToInt32(Console.ReadLine());
int total = 365;
if (year % 400 == 0 || year % 4 == 0 && (year % 100) != 0)
{
total = 366;
}
int y = total;
Console.Write("请输入当前的月份: ");//输入月
int month = Convert.ToInt32(Console.ReadLine());//System.Convert.ToInt32,从输入设备读取32位类型整型数据;
Console.Write ("请输入本月的几号: ");//输入日
int day = Convert.ToInt32(Console.ReadLine());
if ((month > 0) && (month < 13))//判断月份
{
switch (month)
{
case 1:
if ((day > 0) && (day < 32))
{
break;
}
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 3:
if ((day > 0) && (day < 32))
{
break;
}
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 5:
if ((day > 0) && (day < 32))
{
break;
}
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 7:
if ((day > 0) && (day < 32))
{
break;
}
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 8:
if ((day > 0) && (day < 32))
{
break;
}
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 10:
if ((day > 0) && (day < 32))
{
break;
}
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 12:
if ((day > 0) && (day < 32))
{
break;
}
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 2:
if ((day > 0) && (day < 29))
{
Console.WriteLine("今年是平年,有365天 ");

break;

}
else if ((y == 366) && (day > 0) && (day < 30))
{
Console.WriteLine("今年是闰年,有366天 ");
break;
}
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 4:
if ((day > 0) && (day < 31))
{ break; }
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 6:
if ((day > 0) && (day < 31))
{ break; }
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 9:
if ((day > 0) && (day < 31))
{ break; }
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
case 11:
if ((day > 0) && (day < 31))
{ break; }
else
{
Console.WriteLine("您输入的当前日期无效!请重新输入 ");
goto start;
}
}

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

Console.WriteLine("year"+"是年中的第{0}天! ", dt.DayOfYear - 1);
Console.Read();
}
else
{
Console.WriteLine("您输入的当前月份无效!请重新输入 ");
goto start;
}
}
}
现在想将输入的年月日值一次性输入,并且是yyyy_mm_dd样式的格式该怎么修改
还要在最后计算天数的显示为 (输入的年月日)是(输入的年份)中的第X天。
因该怎么修改。一个很初级的问题,谢谢了
...全文
303 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
wartim 2009-05-31
  • 打赏
  • 举报
回复
这帖太诡异了
我姓区不姓区 2009-05-27
  • 打赏
  • 举报
回复
楼主给错分了吧
xxyping 2009-05-27
  • 打赏
  • 举报
回复
14楼估计此贴要在27楼以后结束 先知啊!!!
我姓区不姓区 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zgke 的回复:]
引用 11 楼 sicold 的回复:
引用 8 楼 zgke 的回复:
就是控制台也没这么麻烦
static void Main(string[] args)
{
Console.WriteLine("请按规定的格式输入年月日(2006-7-16):  ");
Console.WriteLine("请输入年份 ");

string _DateValue = Console.ReadLine();

DateTime _DateTime;
if (DateTime.TryParse(_DateValue, out _DateTime))



看27楼的回复使用
TryParseExact定义格式就可以了.
[/Quote]
见鬼了?哪来的27楼?
yingzhilian2008 2009-05-27
  • 打赏
  • 举报
回复
DateTime.Now.DayOfYear就是获得该日期是该年中的第几天
zgke 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sicold 的回复:]
引用 8 楼 zgke 的回复:
就是控制台也没这么麻烦
static void Main(string[] args)
{
Console.WriteLine("请按规定的格式输入年月日(2006-7-16): ");
Console.WriteLine("请输入年份 ");

string _DateValue = Console.ReadLine();

DateTime _DateTime;
if (DateTime.TryParse(_DateValue, out _DateTime))

[/Quote]

看27楼的回复使用
TryParseExact定义格式就可以了.
HUOWEI 2009-05-27
  • 打赏
  • 举报
回复
帮你顶,学习!
jishengzu 2009-05-27
  • 打赏
  • 举报
回复
是第几个月吧?
DateTime.Now.Month月数
sicold 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zgke 的回复:]
就是控制台也没这么麻烦
static void Main(string[] args)
{
Console.WriteLine("请按规定的格式输入年月日(2006-7-16): ");
Console.WriteLine("请输入年份 ");

string _DateValue = Console.ReadLine();

DateTime _DateTime;
if (DateTime.TryParse(_DateValue, out _DateTime))
{
Con…
[/Quote]

感谢了,差不多是这回事,但格式有点不一样,是2006_6_7这样·类似下划线
还有最后提示那是yy年中的第X天,年份会原版显示,
我姓区不姓区 2009-05-27
  • 打赏
  • 举报
回复
不用这么复杂的……

static void Main(string[] args)
{
bool legal = false;
DateTime dt = DateTime.Now;
while (!legal)
{
Console.Write("请按规定的格式输入年月日(2006_7_16): ");
legal = DateTime.TryParseExact(Console.ReadLine(), "yyyy_M_d", null, System.Globalization.DateTimeStyles.None, out dt);
}
Console.WriteLine("你输入的日期是当年的第{0}天", dt.DayOfYear);
}

sicold 2009-05-27
  • 打赏
  • 举报
回复
一年中的第几天已经算出来了,我想的是在前面添加进去键盘输入的年月日和年份

(用户输入的年月日)是(用户输入的月)年中的第(X这个不用)天。
怎么添加进去writeline里呢
zgke 2009-05-27
  • 打赏
  • 举报
回复
就是控制台也没这么麻烦
static void Main(string[] args)
{
Console.WriteLine("请按规定的格式输入年月日(2006-7-16): ");
Console.WriteLine("请输入年份 ");

string _DateValue = Console.ReadLine();

DateTime _DateTime;
if (DateTime.TryParse(_DateValue, out _DateTime))
{
Console.WriteLine("year" + "是年中的第{0}天! ", _DateTime.DayOfYear - 1);
Console.Read();
}
else
{
Console.WriteLine("输入错误!");
Main(null);
}

}
ly19850703 2009-05-27
  • 打赏
  • 举报
回复
DateTime.DayOfYear会显示这天是一年中的第几天的!
jishengzu 2009-05-27
  • 打赏
  • 举报
回复
用这个dateTimePicker控件就能控制日期输入 保证不会错,而且不用写那么多判断

DateTime.Now.DayOfYear就是获得该日期是该年中的第几天
qldsrx 2009-05-27
  • 打赏
  • 举报
回复
难道只能使用控制台吗?这样的话只能输入后验证了,可以使用正则表达式验证,也可以在转换时通过try-catch来抛出异常,转换失败就是格式不对。
sicold 2009-05-27
  • 打赏
  • 举报
回复
谢谢,能说得清楚些吗?我是初学者
wartim 2009-05-27
  • 打赏
  • 举报
回复
goto...
jishengzu 2009-05-27
  • 打赏
  • 举报
回复
DateTime.Now.DayOfYear
jishengzu 2009-05-27
  • 打赏
  • 举报
回复
控制输入格式用dateTimePicker

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧