java - 解析日期向格式化日期添加一天

标签 java date gwt smartgwt

这段简单的代码将Date字符串转换为我想要的格式。但是,当格式化日期时,会添加额外的一天。当 SmartGWT 中的相对日期项控件上触发 onChanged 事件时,解析完成。然而,我认为该组件的使用不会影响日期解析。

private static String DATE_FORMAT = "dd.MMM.yyyy kk:mm";
...
private void changeDateFormat()
{      
     DateUtil.setShortDatetimeDisplayFormatter(new DateDisplayFormatter()
     {
        public String format(Date date)
        {
           System.out.println("setShortDatetimeDisplayFormatter = " + date.toString());
           if(date == null)
           {
              return null;
           }
           else
           {
              final DateTimeFormat dateFormatter = DateTimeFormat.getFormat(DATE_FORMAT);
              System.out.println("Formatted date = " + dateFormatter.format(date));
              return dateFormatter.format(date);
           }

        }
     });

     // It is a requirement that we implement a custom date parser or the onChanged event
     // will not fire.

     DateUtil.setDateParser(new DateParser()
     {
        public Date parse(String dateString)
        {           
           System.out.println("Entering parse = " + dateString);
           final DateTimeFormat format = DateTimeFormat.getFormat(DATE_FORMAT);

           System.out.println("Exiting parse = " + format.parse(dateString));
           return format.parse(dateString);

        }
     });
  }

调试:

setShortDatetimeDisplayFormatter = Tue Feb 19 00:00:00 EST 2013
Formatted date = 19.Feb.2013 24:00
Entering parse = 19.Feb.2013 24:00
Exiting parse = Wed Feb 20 00:00:00 EST 2013
Entering parse = 19.Feb.2013 24:00
Exiting parse = Wed Feb 20 00:00:00 EST 2013
setShortDatetimeDisplayFormatter = Wed Feb 20 00:00:00 EST 2013
Formatted date = 20.Feb.2013 24:00

它会触发两次,因为 RelativeDateItem 控件同时包含选取器文本和相邻标签文本,因此两者都必须格式化。

最佳答案

使用此格式:

dd.MMM.yyyy HH:mm

看起来 kk 的格式和解析是不对称的。我以前从未意识到这一点。

但是 Java 的日期处理不再让我感到惊讶......

关于java - 解析日期向格式化日期添加一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15067443/

相关文章:

html - GWT CSS 问题

java - PrimeFaces 自动完成功能在更新后失去值(value)

javascript - MongoDB with Mongoose - 选择指定日期范围丢弃时间

java - 在android中根据日期查找一天

使用 GWT 编译器从 Java 到 JavaScript

gwt - 如何使用 GWT 发布数据并重定向到另一个页面?

java - 无法在 Selenium 中输入任何文本

java - 在Android中动态创建应用程序类

java - 使用 LibGdx 在 Java 中出现奇怪的 CPU 使用率

php - mysql 在两个日期/时间之间进行选择