![](/img/trans.png)
[英]Incorrect date when converting unix epoch to human readable using Java
[英]Converting human readable date to java date object
这是我的问题-我需要解析一个字符串并查找它是否包含日期。 字符串示例:
“明天2AM”“ 2010年2月16日16:00”“今天16:00”
您是否知道任何解决人类可读日期转换的Java库?
在此处查看解决方案Java中的PHP的strtotime()
它基本上是PHP的strtotime在Java中的实现
这是两个问题,一个关于识别,另一个在转换。
识别可能的日期上下文是(相对)容易的,但是由于多种原因,转换存在很大的问题,尤其是人们可以用多种方式语义表达日期的方式,以及随之而来的歧义和错误陈述。 让我们在这里看一些明显的陷阱:
“后天下午2点。” 如果我们只是简单地在“明天下午2点”进行评估,那将是一天的漂泊。
“ 2010年10月16日之后两天”。情况变得越来越糟...
“ 2013年3月13日,星期五,晚上9点之前不多”,我们可以追溯到日期,但是上下文使它变得非常模棱两可。
假设您只想在字符串中标识潜在的日期匹配,则可以执行以下操作...
private final String[] datePatterns = {"Yesterday","Today","Tomorrow", //etc
"Sunday","Monday","Tuesday","Thursday","Friday", // etc
"Lundi","Mardi","Mercredi", //etc in French
"2001","2002", // all the years
"AM","PM",
"January","February","March","August"};
private List lx = new ArrayList();
public boolean mayContainDates(String toCheck)
{
toCheck = toCheck.toUpperCase();
// irl we'd build this list 1 time in the constructor
for(int i = 0; i < datePatterns.length; i++)
{
lx.add(datePatterns[i].toUpperCase());
}
Iterator lit = lx.iterator();
while(lit.hasNext())
{
if (toCheck.contains((String) lit.next())
{
return true;
}
}
return false;
}
这实际上是关于如何设置比较器的datePattern String数组的问题。 或者,您可以以某种相似的方式迭代一组正则表达式,但速度会很慢。 您可能会得到很多误报,但显然可以在此简单模型上进行改进。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.