patterncsharpMinor
Parsing dates from a webpage
Viewed 0 times
fromdatesparsingwebpage
Problem
I have two inputs (TextBox) on my front end.
The following code parses them from their string representation to a
However, the code looks bulky. Is there a better way to write it?
The following code parses them from their string representation to a
DateTime object. If it fails, it then sets default values.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; }However, the code looks bulky. Is there a better way to write it?
Solution
You won't be able to change the bulkiness much but there are a few things you can do:
or even
-
Use
-
Consider making a datetime picker available in the frontend instead of a textbox. It's a lot more user-friendly and it will avoid invalid dates.
- indent your code. It will take more space but it will also be more readable:
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;
}- Wait for C# 6 which has inline-out-variables. This will make it possible to write the
TryParselike this:
if (!DateTime.TryParse(txtDateFrom.Text, out DateTime dateFrom))or even
if (!DateTime.TryParse(txtDateFrom.Text, out var dateFrom))-
Use
DateTime.UtcNow. By using DateTime.Now you're dependent on the location of your server which might be a problem some time in the future when you host it elsewhere. -
Consider making a datetime picker available in the frontend instead of a textbox. It's a lot more user-friendly and it will avoid invalid dates.
Code Snippets
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;
}if (!DateTime.TryParse(txtDateFrom.Text, out DateTime dateFrom))if (!DateTime.TryParse(txtDateFrom.Text, out var dateFrom))Context
StackExchange Code Review Q#62283, answer score: 4
Revisions (0)
No revisions yet.