Java 正在尝试将日期列表(从数据库驱动)转换为格式(yyyy-mm) public List getDate(){ @抑制警告(“未选中”) List cr=(List)getSession().createCriteria(OrderEntity.class) .setProjection(Projections.projectionList()项目) .add(Property.forName(“ordertime”)) ) .list(); System.out.println(“zxcv”); System.out.println(cr);//输出在这里[2017-10-23 15:15:53.012017-10-25 11:53:56.012017-10-25 11:54:35.0} 列表日期=新的ArrayList(cr.size()); SimpleDataFormat sdf=新的SimpleDataFormat(“yyyy-mm”); for(字符串日期字符串:cr){ add(sdf.parse(dateString)); } 系统输出打印项次(日期); 返回日期; }

Java 正在尝试将日期列表(从数据库驱动)转换为格式(yyyy-mm) public List getDate(){ @抑制警告(“未选中”) List cr=(List)getSession().createCriteria(OrderEntity.class) .setProjection(Projections.projectionList()项目) .add(Property.forName(“ordertime”)) ) .list(); System.out.println(“zxcv”); System.out.println(cr);//输出在这里[2017-10-23 15:15:53.012017-10-25 11:53:56.012017-10-25 11:54:35.0} 列表日期=新的ArrayList(cr.size()); SimpleDataFormat sdf=新的SimpleDataFormat(“yyyy-mm”); for(字符串日期字符串:cr){ add(sdf.parse(dateString)); } 系统输出打印项次(日期); 返回日期; },java,Java,有一个错误: 无法将java.sql.Timestamp转换为java.lang.String 请告诉我如何解决这个错误, 非常感谢。数据库引擎已经知道您的日期是日期而不是字符串。println()对数组元素使用toString(),因此您不会看到。将规范从List更改为List,而不是 public List<Date> getDate(){ @SuppressWarnings("unchecked") List<String> cr =

有一个错误:

无法将java.sql.Timestamp转换为java.lang.String

请告诉我如何解决这个错误,
非常感谢。

数据库引擎已经知道您的日期是日期而不是字符串。
println()
对数组元素使用
toString()
,因此您不会看到。将规范从
List
更改为
List
,而不是

public List<Date> getDate(){
    @SuppressWarnings("unchecked")
    List<String> cr =          (List<String>)getSession().createCriteria(OrderEntity.class)
            .setProjection(Projections.projectionList()
                    .add(Property.forName("ordertime"))
                    )
            .list();
    System.out.println("zxcv");
    System.out.println(cr);//the output is here [2017-10-23 15:15:53.0, 2017-10-25 11:53:56.0, 2017-10-25 11:54:35.0}
    List<Date> dates = new ArrayList(cr.size());
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm");
    for (String dateString : cr) {
        dates.add(sdf.parse(dateString));
    }
    System.out.println(dates);
    return dates;
}


数据库引擎已经知道您的日期是日期而不是字符串。
println()
对数组元素使用
toString()
,因此您将看不到这一点。将规范从
List
更改为
List
,而不是

public List<Date> getDate(){
    @SuppressWarnings("unchecked")
    List<String> cr =          (List<String>)getSession().createCriteria(OrderEntity.class)
            .setProjection(Projections.projectionList()
                    .add(Property.forName("ordertime"))
                    )
            .list();
    System.out.println("zxcv");
    System.out.println(cr);//the output is here [2017-10-23 15:15:53.0, 2017-10-25 11:53:56.0, 2017-10-25 11:54:35.0}
    List<Date> dates = new ArrayList(cr.size());
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm");
    for (String dateString : cr) {
        dates.add(sdf.parse(dateString));
    }
    System.out.println(dates);
    return dates;
}


您在哪一行收到此错误。您好,我从这里收到错误--[for(String dateString:cr)]我正在尝试将那里的输出转换为这种格式“yyy-mm”感谢您的帮助请使用Java的新数据API,类
Date
是遗留的,请使用
LocalDate
Java.time
包中的其他类。您在哪一行收到此错误。您好,我从这里得到了错误--[for(String-dateString:cr)]我正在尝试将那里的输出转换为此格式“yyyy-mm”感谢您的帮助请使用Java的新数据API,类
Date
是遗留的,使用
LocalDate
Java.time
package.hi中的其他类。您的解决方案工作正常,但是如何将日期转换为这种格式“yyy-mm”,现在的输出是这样的[2017-10-23 15:15:53.0,2017-10-25 11:53:56.0]。感谢您的帮助如果您想要格式化日期,请查看
SimpleDataFormat
。您使用它解析日期,但它也可以格式化日期。我明白了。非常感谢您,您的解决方案不会出错,但如何将日期转换为此格式“yyy-mm”“,现在输出是这样的[2017-10-23 15:15:53.0,2017-10-25 11:53:56.0]。感谢您的帮助如果您想要格式化日期,请查看
SimpleDataFormat
。您使用它解析日期,但它也可以格式化日期。我明白了。非常感谢您
for (Timestamp ts : cr) {
    dates.add(new Date(ts.getTime()));
}