为什么 DateTime.TryParse 在给定真实年份字符串时返回 false?

发布于 2024-07-24 20:06:49 字数 270 浏览 3 评论 0原文

在下面的代码中,我为函数指定了 sTransactionDate="1999",并尝试将其转换为日期 x/x/1999。

DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy 
}else
{ //Sad 
}

如果字符串是“1999”,它总是以悲伤结束。 有任何想法吗?

In the code below I am giving the function a sTransactionDate="1999" and I am trying to covert it to a date x/x/1999.

DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy 
}else
{ //Sad 
}

if the string is "1999" it will always end up in sad. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

披肩女神 2024-07-31 20:06:49

尝试这样的事情(适当调整 CultureInfoDateTimeStyles):

DateTime.TryParseExact
  ("1999",
   "yyyy",
   CultureInfo.InvariantCulture,
   DateTimeStyles.None,
   out dTransactionDate)

Try something like this (adjust the CultureInfo and DateTimeStyles appropriately):

DateTime.TryParseExact
  ("1999",
   "yyyy",
   CultureInfo.InvariantCulture,
   DateTimeStyles.None,
   out dTransactionDate)
甜味拾荒者 2024-07-31 20:06:49

怎么样……

DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
    CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
    // Happy
}
else
{
    // Sad
}

或者甚至只是……

DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy

How about...

DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
    CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
    // Happy
}
else
{
    // Sad
}

...or even just...

DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy
双手揣兜 2024-07-31 20:06:49

“1999”不是日期,而是年份
尝试 1999 年 1 月 1 日

"1999" is not a date, it's a year
try 1/1/1999

无语# 2024-07-31 20:06:49

还要在系统日历上验证您尝试解析的日期是否存在。 就像您会发现“2/29/1949”也会返回 false,因为它在日历上从未存在过。

Also verify on a system calendar that the date you are attempting to parse existed. Just like you'll find "2/29/1949" is also going to return false because it never existed on the calendar.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文