我正在写一个在下午4点和凌晨5点调用方法的服务.我想保持这些时间不被硬编码,所以我想将它们放在我的appconfig中.
这是我的代码:
public bool CheckTime()
{
DateTime startTime;
DateTime endTime;
DateTime.TryParse(ConfigurationManager.AppSettings["ProcessingStartTime"], out startTime);
DateTime.TryParse(ConfigurationManager.AppSettings["ProcessingEndTime"], out endTime);
if(DateTime.Now.TimeOfDay.Equals(startTime) || DateTime.Now.TimeOfDay.Equals(endTime))
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
但是,因为我只想将时间存储为字符串(就像"下午4点"一样简单),如何解析和封装JUST时间在DateTime对象中?还是有另一个对象?我不关心日期,它只需要是任何给定年份的任何给定周的MF.
多谢你们.
您可以使用TryParseExact适当的格式字符串,然后忽略日期..NET中的"只是时间"没有很好的封装.然而,还有另一种选择 - 我一直在Noda Time上努力工作,它的LocalTime类型就是为了这个目的:
// "Traditional" way
LocalTime time;
if (LocalTime.TryParseExact(text, "h:mmtt", out time))
{
...
}
// Preferred way
private static readonly LocalTimePattern TimePattern =
LocalTimePattern.CreateWithInvariantInfo("h:mmtt");
...
ParseResult<LocalTime> parseResult = TimePattern.Parse(text);
if (parseResult.Success)
{
LocalTime time = parseResult.Value;
...
}
Run Code Online (Sandbox Code Playgroud)
两个旁注:
DateTime.TryParseTryParseDateTime.MinValue请尽量避免使用表单代码:
if (condition)
return true;
else
return false;
Run Code Online (Sandbox Code Playgroud)
这更明确地写为:
return condition;
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
6050 次 |
| 最近记录: |