我想知道如何以同样的格式DateTime.Now
格式化Thursday 03:00 PM
,以便我可以将其与自定义格式的日期时间值进行比较,
我正在尝试创建一个简单的调度系统,如果特定的日期时间等于当前日期时间,代码将在其下运行但我仍然难以将自定义日期与当前日期时间进行比较
string[] schedule = { "Thursday 2:47 PM", "Thursday 2:50 PM", "Thursday 2:55 PM" };
private void timer1_Tick(object sender, EventArgs e)
{
DateTime dateValue;
foreach (var i in schedule)
{
if (DateTime.TryParse(i, out dateValue))
{
if (dateValue == DateTime.Now)
{
//do something here
}
}
}
}
private void Form1_Shown(object sender, EventArgs e)
{
timer1.Start();
}
答案 0 :(得分:3)
尝试dateValue.ToString("dddd hh:mm tt", CultureInfo.CreateSpecificCulture("en-US"))
您可以参考MSDN了解更多信息。
答案 1 :(得分:2)
它应该以这种方式工作。
if (DateTime.TryParse(i, out dateValue))
{
if (dateValue.ToShortTimeString() == DateTime.ToString("dd hh:mm tt"))
{
//do something here
}
}
dd 告诉显示当天。 hh 显示小时数, mm 显示分钟数。我离开 ss 几秒钟,因为看起来你不需要它。通过 tt PM 或 AM 将会显示。
答案 2 :(得分:1)
使用DateTime.ParseExact方法将字符串从自定义格式转换为DateTime
答案 3 :(得分:1)
您正在尝试将Time
值与DateTime
值进行比较。我想您只想比较array
到current
时间值的时间值,在这种情况下,您可以比较日期的时间部分。
if (DateTime.TryParse(i, out dateValue))
{
if (dateValue.ToShortTimeString() == DateTime.Now.ToShortTimeString())
{
//do something here
}
}
答案 4 :(得分:1)
答案 5 :(得分:1)
首先,您需要将计划字符串数组中的时间转换为DateTime。
关于日期时间样式的链接:http://www.csharp-examples.net/string-format-datetime/
之后,您只需比较2个日期的时间部分。从这里得到答案:How to compare time part of datetime
所以,最后你的代码将是这样的:
string[] schedule = { "Thursday 2:47 PM", "Thursday 2:50 PM", "Thursday 2:55 PM" };
private void timer1_Tick(object sender, EventArgs e)
{
DateTime dateValue;
foreach (var i in schedule)
{
if (DateTime.TryParseExact(i, "dddd h:mm tt", CultureInfo.CreateSpecificCulture("en-US"), DateTimeStyles.None, out dateValue))
{
var currentDate = DateTime.Now;
if (dateValue.DayOfWeek == currentDate.DayOfWeek && dateValue.TimeOfDay == currentDate.TimeOfDay)
{
//do something here
}
}
}
}
private void Form1_Shown(object sender, EventArgs e)
{
timer1.Start();
}
当然,您可以将DateTime.Now转换为有效格式的字符串(如在字符串数组中),但我认为这是错误的。如果您想检查您的日期是否早于或晚于当前日期,则必须重写您的代码。