Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT-转换日期格式_Java_Datetime_Gwt_Formatting - Fatal编程技术网

Java GWT-转换日期格式

Java GWT-转换日期格式,java,datetime,gwt,formatting,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.

我有以下方法:

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中编写此代码?

我想到了四种方法:

  • 不要在客户端执行,而是在服务器端执行。 客户端的GWT中未模拟日历
  • 如果必须在客户端执行此操作,请尝试使用不推荐的方法 在约会课上。它们仍然有效,而且都被弃用了 支持日历中的方法,所以您只需回滚 稍微打点钟
  • 说到时光倒流,你可以 也就是说,向前滚动。日历模拟即将到来 格温特,至少我读过。那么你现在就可以做了 当日历到达时,将该方法移动到客户端。或者, 你现在可以做(2),把它换成你原来的 日历到达时基于日历的代码
  • 使用Date上的getTime()方法(该方法未被弃用,由客户端GWT模拟),并进行直接整数比较以确定要返回的字符串。getTime()返回毫秒,因此“几秒钟前”的差值为60000毫秒或更少,“几分钟前”的差值为3600000毫秒或更少,依此类推
  • 去4号

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

    是Joda time to gwt的一个端口,它对于处理时间段和持续时间非常有用

    在您的例子中,您可以构造
    DateTime
    s或
    LocalDateTime
    s,然后用这两个值构造一个
    Period
    ,以查找它们之间的秒数、分钟数、小时数、天数等

    例如:

    private static int daysBetween(LocalDateTime start, LocalDateTime end) {
        return new Period(start, end, PeriodType.days()).getDays();
    }
    
    这将查找
    开始
    结束
    之间的完整天数

    您可以重复几秒钟、几分钟等,并对结果进行模糊逻辑处理,以获得所需的输出字符串