我想创建一个这样的程序。
对于每一分钟,时间应以格式打印
h:m
。
每5分钟打印一次“休息”,这应该持续24小时。
像这样
0:0
0:1个
0:2个
0:3个
0:4个
打破
0:6个
0:7个
0:8个
0:9个
打破
0:11
。
。
。
23:59
我带来了解决它的程序..但我从未使用DateTime
或任何时间功能,我只是使用Thread.Sleep
每次打印1分钟...
我想使用除Thread.Sleep
之外的其他方法来解决它...
所以请指导我..(对不起我的坏英语)
这就是我对Thread.Sleep
的处理方式
请提供给我任何其他解决方案
using System;
using System.Threading;
class try22
{
public static void Main()
{
for(int i=0;i<24;i++)
{
for(int j=0;j<60;j++)
{
if(j%5 != 0 || (j == 0 && i == 0))
{
Thread.Sleep(20);
Console.WriteLine(i+":"+j);
}
else if(j%5 == 0 )
{
Thread.Sleep(20);
Console.WriteLine("break");
}
}
}
}
}
谢谢你们,我想出了在我的问题中使用实际日期而不是数组编号的解决方案
我得到奇怪的错误与计时器.. :(所以我用thread.sleep itslef
using System;
using System.Threading;
class try22
{
public static void Main()
{
DateTime dt1 = new DateTime();
dt1 = DateTime.ParseExact("0:0", "H:m",null);
int cford=dt1.Day+1;
for (; dt1.Day!=cford; )
{
dt1 = addm(dt1);
Console.WriteLine(dts(dt1));
Thread.Sleep(60000);
}
}
public static string dts(DateTime dt)
{
string tmp = dt.ToString("H:m");
if (dt.Minute % 5 == 0)
return "BREAK";
else
return tmp;
}
public static DateTime addm(DateTime dt)
{
return dt.AddMinutes(1);
}
}
答案 0 :(得分:1)
您要求的是哪一个?
假设1,这里有一些正确方向的提示(无论哪种方式都应该有用):
DateTime.Now
DateTime
对象获取
DateTime
个对象可以使用.ToString("format")
返回自定义字符串输出。DateTime.Now.ToString("H")
。DateTime.Now.ToString("'Hour is: 'H")
将返回Hour is: 6
DateTime
将int
对象的“分钟”值作为.Minute
。例如,int minute = DateTime.Now.Minute;
如果您想要定期运行某些代码,一种方法是将其移动到自己的方法中,然后像这样设置System.Threading.Timer
:
void SomeMethod(object state) { /* DO STUFF HERE */ }
// Initialise the timer in your main() method
// As per MSDN for System.Threading.Timer, first number (0) is start delay.
// Second number (60000) is interval in milliseconds (60 seconds)
// This will cause SomeMethod to be called once every 60 seconds starting now.
Timer timer = new Timer(new TimerCallback(SomeMethod), null, 0, 60000);
您需要在制作Timer
之后立即停止您的应用程序退出(否则它将无法运行)。在命令行应用程序中执行此操作的一种简单方法是在Console.Read()
方法的末尾放置Main()
,等待用户输入。
答案 1 :(得分:1)
我用过Timer而不是Thread
class Program
{
private static System.Timers.Timer aTimer;
static int j = 0;
static int i = 0;
public static void Main()
{
// Create a timer with a Minute interval.
aTimer = new System.Timers.Timer(60000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Set the Interval to 1 Minute (60000 milliseconds).
aTimer.Interval = 60000;
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program.");
Console.WriteLine(0 + ":" + 0);
Console.ReadLine();
}
// Specify what you want to happen when the Elapsed event is
// raised.
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
j++;
if (j == 60)
{
Console.WriteLine("break");
j = 1;
i = i + 1;
}
if (i == 24)
{
i = 0;
}
if (j % 5 != 0 || (j == 0))
{
Console.WriteLine(i + ":" + j);
}
else if (j % 5 == 0)
{
Console.WriteLine("break");
}
}
}
答案 2 :(得分:0)
我不确定您希望使用实际系统时间开始的天气,或者仅仅是程序执行开始后的时间。解决方案我发布自程序启动以来的使用时间。
using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;
namespace ConsoleApplication1
{
class Program
{
TimeSpan tt;
static void Main(string[] args)
{
Program p = new Program();
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(p.run));
t.Start();
while (true) ;
}
void run()
{
tt=new TimeSpan(0,1,0);
//Timer interval decides when even will be fired.
Timer t = new Timer(60000);
t.AutoReset = true;
t.Elapsed += new ElapsedEventHandler(t_Elapsed);
t.Start();
}
public void t_Elapsed(object sender, EventArgs e)
{
if (tt.Minutes % 5 == 0)
Console.WriteLine("Break");
Console.WriteLine(tt.Hours.ToString()+":"+tt.Minutes.ToString());
tt = tt.Add(new TimeSpan(0, 1, 0));
}
}
}