GET - 转换日期格式

时间:2011-10-01 13:45:50

标签: java datetime gwt formatting

我有以下方法:

public static String formatDate(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    Calendar today = Calendar.getInstance();
    Calendar yesterday = Calendar.getInstance();
    yesterday.add(Calendar.DATE, -1);
    DateFormat timeFormatter = new SimpleDateFormat("hh:mma");
    DateFormat dateTimeFormatter = new SimpleDateFormat("MMM d, yyyy - hh:mma");

    if (calendar.get(Calendar.YEAR) == today.get(Calendar.YEAR) && calendar.get(Calendar.DAY_OF_YEAR) == today.get(Calendar.DAY_OF_YEAR) && calendar.get(Calendar.HOUR_OF_DAY) == today.get(Calendar.HOUR_OF_DAY) && calendar.get(Calendar.MINUTE) == today.get(Calendar.MINUTE)) {
        return "few seconds ago ";
    } else if (calendar.get(Calendar.YEAR) == today.get(Calendar.YEAR) && calendar.get(Calendar.DAY_OF_YEAR) == today.get(Calendar.DAY_OF_YEAR) && calendar.get(Calendar.HOUR_OF_DAY) == today.get(Calendar.HOUR_OF_DAY)) {
        return "few minutes ago ";
    } else if (calendar.get(Calendar.YEAR) == today.get(Calendar.YEAR) && calendar.get(Calendar.DAY_OF_YEAR) == today.get(Calendar.DAY_OF_YEAR)) {
        return "today " + timeFormatter.format(date);
    } else if (calendar.get(Calendar.YEAR) == yesterday.get(Calendar.YEAR) && calendar.get(Calendar.DAY_OF_YEAR) == yesterday.get(Calendar.DAY_OF_YEAR)) {
        return "yesterday " + timeFormatter.format(date);
    } else {
        return dateTimeFormatter.format(date);
    }
}

关于如何在客户端GWT中写这个的想法?

2 个答案:

答案 0 :(得分:2)

我有四种方法可以解决这个问题:

  1. 不要在客户端进行,而是在服务器端进行。 在客户端的GWT中未模拟日历。
  2. 如果必须在客户端执行此操作,请尝试使用已弃用的方法 在Date类中。他们仍然有效,而且他们都被弃用了 赞成日历中的方法,所以你只需要回滚 时钟有点。
  3. 谈到滚动返回时钟,你可以 也只是向前滚动。日历仿真即将到来 GWT,至少是我读过的内容。你现在可以做(1) 当Calendar到达时将该方法移动到客户端。交替, 你现在可以做(2),并把它换成你原来的 日历到达时基于日历的代码。
  4. 在Date上使用getTime()方法(已弃用且由客户端的GWT模拟)并执行直接整数比较以确定要返回的字符串。 getTime()返回毫秒,所以"几秒钟之前"将是60,000毫秒或更短的差异,"几分钟前"将是3,600,000毫秒或更短的差异,依此类推。
  5. 去寻找4。

    使用com.google.gwt.i18n.client.DateTimeFormat中的方法进行日期/时间格式设置。

答案 1 :(得分:0)

gwttime是Joda-Time to GWT的一个端口,对于处理时间段和持续时间非常有用。

在您的情况下,您可以构建DateTimeLocalDateTime s,然后使用它们构建Period以查找秒数,分钟数,小时数,天数等等。

例如:

private static int daysBetween(LocalDateTime start, LocalDateTime end) {
    return new Period(start, end, PeriodType.days()).getDays();
}

这会找到startend之间的完整天数。

你可以重复几秒钟,几分钟等,然后用结果模糊逻辑来得到你想要的输出字符串。