我希望能够让用户使用自然语言(例如“下周五”、“每个工作日”)输入日期(包括重复日期)。很像http://todoist.com/Help/timeInsert上的示例
我找到了这篇文章,但它有点旧,并且只提供了一个我并不完全满意的解决方案。我想我会重新提出这个问题,看看:是否还有其他 .NET 库可以进行这种日期解析?
我希望能够让用户使用自然语言(例如“下周五”、“每个工作日”)输入日期(包括重复日期)。很像http://todoist.com/Help/timeInsert上的示例
我找到了这篇文章,但它有点旧,并且只提供了一个我并不完全满意的解决方案。我想我会重新提出这个问题,看看:是否还有其他 .NET 库可以进行这种日期解析?
我知道这不是最佳解决方案,但您也可以尝试将dateJs库移植到 .net
它处理像今天这样的事情;明天; 2008 年 7 月;下周五; 去年四月;2004.08.07;2005 年 6 月 4 日;晚上 8 点 15 分;22:30:45;+5年
我不知道你今天可以在框架中使用什么来允许你这样做,但如果你满足于玩未来的比特,你可以看看 Oslo,并制作你自己的文本 DSL。
这篇文章展示了如何做你正在尝试做的事情:
http://www.infoq.com/articles/natural-language-date-dsl-oslo
DateTime.Parse() 将接受一个字符串参数并尝试生成它的 DateTime 相等。我对此有点生疏,但它应该适用于您可以使用 DateTime.ToString() 生成的任何日期字符串。
您还可以查看 DateTime.ParseExact(),它与 Parse() 执行相同的操作,但允许您限制输入字符串的可能格式。以下链接应该可以帮助您使用框架中的任何其他日期解析功能。
我们开发的正是您在内部项目中寻找的东西。如果有足够的需要,我们正在考虑将其公开。请查看此博客了解更多详细信息:http: //precisionsoftwaredesign.com/blog.php。
我已经将这个库构建为工作项目的一部分。它没有完全完善,但如果您有兴趣,我可以在其中投入更多工作和/或根据您的需要安排许可证。
我编写的非常旧的程序(使用 DBASE 衍生工具 Clipper),但代码可读性很强。
http://www.jbooth-consulting.com/downloads/clipper/guessdate.zip
如果您想自己动手,可能会给您一些想法...