我的前端有两个输入(TextBox)。
下面的代码将它们从字符串表示形式解析为DateTime对象。如果失败,则设置默认值。
DateTime dateFrom;
DateTime dateTo;
if (!DateTime.TryParse(txtDateFrom.Text, out dateFrom)) { dateFrom = DateTime.Today.AddDays(-7); }
if (!DateTime.TryParse(txtDateTo.Text, out dateTo)) { dateTo = DateTime.Now; }然而,代码看起来很笨重。有更好的方法来写吗?
发布于 2014-09-08 11:34:41
你将无法改变笨重,但有几件事你可以做:
DateTime dateFrom;
DateTime dateTo;
if (!DateTime.TryParse(txtDateFrom.Text, out dateFrom))
{
dateFrom = DateTime.Today.AddDays(-7);
}
if (!DateTime.TryParse(txtDateTo.Text, out dateTo))
{
dateTo = DateTime.Now;
}TryParse:if (!DateTime.TryParse(txtDateFrom.Text, out DateTime dateFrom))甚至是
if (!DateTime.TryParse(txtDateFrom.Text, out var dateFrom))DateTime.UtcNow。通过使用DateTime.Now,您将依赖于服务器的位置,这可能是将来某个时候在其他地方托管服务器时的问题。发布于 2014-09-08 14:26:03
我喜欢Nick Udell的概念,但我更喜欢在这种情况下使用扩展方法,并且避免使用否定的情况--我发现在凌晨2点,当某些东西被破坏时,这些方法比使用正案例更令人困惑。
public static DateTime TryParse(this DateTime defaultValue, string TextToParse)
{
DateTime.TryParse(TextToParse, out defaultValue);
return defaultValue;
}用法:
DateTime dateFrom = DateTime.Today.AddDays(-7).TryParse(txtDateFrom.Text);
DateTime dateTo = DateTime.Now.TryParse(txtDateTo.Text);https://codereview.stackexchange.com/questions/62283
复制相似问题