问题 与.NET约会的最佳方式?


我从我的页面回来了一个字符串,我想确定它是一个约会。这是我到目前为止(它的工作原理),我只是想知道这是否是“最好”的方法。我正在使用.NET 4。

int TheMonth =0;
int TheDay = 0;
int TheYear = 0;
DateTime NewDate;

var TheIncomingParam = Request.Params.Get("__EVENTARGUMENT").ToString();

char[] TheBreak = { '/' };
string[] TheOutput = TheIncomingParam.Split(TheBreak);

try { TheMonth = Convert.ToInt32(TheOutput[0]); }
catch { }

try { TheDay = Convert.ToInt32(TheOutput[1]); }
catch { }

try { TheYear = Convert.ToInt32(TheOutput[2]); }
catch { }

if (TheMonth!=0 && TheDay!=0 && TheYear!=0)
{
        try { NewDate = new DateTime(TheYear, TheMonth, TheDay); }
        catch { var NoDate = true; }
}

9014
2018-02-10 20:28


起源

有一个很好的接送线。 - jerebear
有很多钱 - flumpb
首先问她出去。 - Seva Alekseyev
1:有吸引力。 2:不要没有吸引力。 3:有钱。 - Christoffer Hammarström
@ T.E.D。或者,也许不是,大声笑。他可能会得到更多的关注;-) - Josh


答案:


使用其中之一 Parse 方法定义 DateTime 结构体。

如果字符串不可解析,这些将抛出异常,因此您可能希望使用其中一个 TryParse 相反的方法(不是很漂亮 - 它们需要一个out参数,但更安全):

DateTime myDate;
if(DateTime.TryParse(dateString, 
                  CultureInfo.InvariantCulture, 
                  DateTimeStyles.None, 
                  out myDate))
{
   // Use myDate here, since it parsed successfully
}

如果您知道传入日期的确切格式,可以尝试使用 ParseExact 要么 TryParseExact 采取日期和时间格式字符串(标准 要么 习惯)当试图解析日期字符串时。


13
2018-02-10 20:29



啊!它已经内置到框架中!谢谢。顺便说一句,我让我的页面工作:而不是页面方法发送参数,我得到它与__doPostBack一起工作。 - frenchie
@frenchie - 很高兴听到你把它整理好了......而且BCL内置了很多这样的东西。花一些时间阅读MSDN上的文档,你永远不知道你会发现什么。 - Oded
是的,有很多内置可以提供帮助,但前提是你知道它存在。前几天我发现了扩展方法,这些都很棒!! - frenchie


怎么样 DateTime.TryParse 和 DateTime.TryParseExact

第一个使用当前的文化日期格式。


2
2018-02-10 20:30





.NET给了我们一个 datetime.parse

http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

和a datetime.tryparse

http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx

这两种方法都是从字符串中解析日期的好方法


1
2018-02-10 20:31



Aaarghhh。资本! - CesarGon


我只想TryParse输入字符串:

    private bool ParseDateString()
    {
        var theIncomingParam = Request.Params.Get("__EVENTARGUMENT").ToString(); 

        DateTime myDate;

        if (DateTime.TryParse(theIncomingParam, CultureInfo.InvariantCulture, DateTimeStyles.None, out myDate))
        {
            int TheMonth = myDate.Month;
            int TheDay = myDate.Day;
            int TheYear = myDate.Year;

            // TODO: further processing of the values just read

            return true;
        }
        else
        {
            return false;
        }
    }

0
2018-02-10 23:02





对于URL:  运用 date iso formate(YYYYMMDD

转换:

datetime.TryParse如上所述


0
2018-02-10 20:52