【问题标题】:Code for fuzzy date to absolute date?模糊日期到绝对日期的代码?
【发布时间】:2010-08-11 09:53:03
【问题描述】:

我需要接受字符串并确定日期的代码。我写了一个简单的 15line 函数来返回假设它是相对的日期。那很简单。现在我需要输入一个字符串,例如“jan 17 09”“1/2/3”(是 MM/DD/YY?还是 DD/MM/YY,这里指的是前者)。我需要模棱两可的返回码或异常。我可以用什么来解析这些绝对日期?

【问题讨论】:

  • “模棱两可”是什么意思?返回码有一个特定的值(或值的范围)——所以也许你的意思是“我不知道这个日期是什么”的特定值——但这并不是模棱两可的。
  • 当您说“我需要不明确的返回码”时,您的意思是说明确吗?
  • 我的意思是返回代码或关于歧义的异常。

标签: c# .net datetime date


【解决方案1】:

日期格式很大程度上取决于您线程的当前文化设置。

【讨论】:

  • 我需要将其作为用户设置的参数传入。但是我可以使用什么库的什么功能呢?
  • 您可以使用Thread.CurrentUICulture 来获取用户运行其操作系统的任何文化。
  • 实际上我在服务器上使用 IMAP 和谷歌应用程序来检测电子邮件是来自用户还是来自另一方(把它想象成在你的手机上写一封更新状态的电子邮件) -编辑-哦,所以我可以使用该 .NET 函数进行设置并使用 DateTime.Parse。如果我能为客户找出最好的文化信息,那就太好了。
【解决方案2】:

如果您知道需要处理的特定文化(您在对 Leppie 的回答的评论中提到),您可以简单地使用 System.Convert.ToDateTime 函数将您的模棱两可的字符串转换为特定的绝对日期(使用指定的文化)。

例如:

string s1 = "jan 17 09";
string s2 = "1/2/3";
// Creates a specific culture, irrespective of the "local" culture,
// in this case, Japanese.
CultureInfo culture = CultureInfo.CreateSpecificCulture("ja-JP");
DateTime d1 = Convert.ToDateTime(s1, culture);
DateTime d2 = Convert.ToDateTime(s2, culture);
Console.WriteLine(d1.ToLongDateString());
Console.WriteLine(d2.ToLongDateString());

【讨论】:

    猜你喜欢
    • 2017-03-10
    • 2010-10-23
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多