首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从网页解析日期

从网页解析日期
EN

Code Review用户
提问于 2014-09-08 11:19:06
回答 2查看 280关注 0票数 4

我的前端有两个输入(TextBox)。

下面的代码将它们从字符串表示形式解析为DateTime对象。如果失败,则设置默认值。

代码语言:javascript
复制
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; }

然而,代码看起来很笨重。有更好的方法来写吗?

EN

回答 2

Code Review用户

发布于 2014-09-08 11:34:41

你将无法改变笨重,但有几件事你可以做:

  • 缩进你的代码。它将占用更多的空间,但也将更具可读性:
代码语言:javascript
复制
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; 
}
  • 等待包含内联变量的C# 6.这样就可以这样编写TryParse
代码语言:javascript
复制
if (!DateTime.TryParse(txtDateFrom.Text, out DateTime dateFrom))

甚至是

代码语言:javascript
复制
if (!DateTime.TryParse(txtDateFrom.Text, out var dateFrom))
  • 使用DateTime.UtcNow。通过使用DateTime.Now,您将依赖于服务器的位置,这可能是将来某个时候在其他地方托管服务器时的问题。
  • 考虑在前端而不是文本框中使用日期选择器。这是一个更友好的用户,它将避免无效的日期。
票数 4
EN

Code Review用户

发布于 2014-09-08 14:26:03

我喜欢Nick Udell的概念,但我更喜欢在这种情况下使用扩展方法,并且避免使用否定的情况--我发现在凌晨2点,当某些东西被破坏时,这些方法比使用正案例更令人困惑。

代码语言:javascript
复制
public static DateTime TryParse(this DateTime defaultValue, string TextToParse) 
{
    DateTime.TryParse(TextToParse, out defaultValue);
    return defaultValue;
}

用法:

代码语言:javascript
复制
DateTime dateFrom = DateTime.Today.AddDays(-7).TryParse(txtDateFrom.Text); 
DateTime dateTo = DateTime.Now.TryParse(txtDateTo.Text);
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/62283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档