簡體   English   中英

解析日期時間,格式為“ X分鍾/小時/天/周/月/月/年前”

[英]Parsing date times in “X minutes/hours/days/weeks/months/years ago” format

如何解析日期格式,例如X分鍾/小時/天/天/周/月/年前。 這里有一些例子來說明我所指的是:

  • 3天前
  • 1分鍾前
  • 2年前

我不認為使用默認Java庫很容易實現。 我對嗎?

一個基於Calendar API的小片段。

Pattern p = Pattern.compile("(\\d+)\\s+(.*?)s? ago");

Map<String, Integer> fields = new HashMap<String, Integer>() {{
    put("second", Calendar.SECOND);
    put("minute", Calendar.MINUTE);
    put("hour",   Calendar.HOUR);
    put("day",    Calendar.DATE);
    put("week",   Calendar.WEEK_OF_YEAR);
    put("month",  Calendar.MONTH);
    put("year",   Calendar.YEAR);
}};

String[] tests = {
        "3 days ago",
        "1 minute ago",
        "2 years ago"
};

for (String test : tests) {

    Matcher m = p.matcher(test);

    if (m.matches()) {
        int amount = Integer.parseInt(m.group(1));
        String unit = m.group(2);

        Calendar cal = Calendar.getInstance();
        cal.add(fields.get(unit), -amount);
        System.out.printf("%s: %tF, %<tT%n", test, cal);
    }
}

輸出:

3 days ago: 2012-08-18, 09:21:38
1 minute ago: 2012-08-21, 09:20:38
2 years ago: 2010-08-21, 09:21:38

它實際上取決於您指的是“ ago”的上下文,是從當前日期還是從指定日期開始。

您可以使用Java API來實現:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM