3

Apache POI で作成されたスプレッドシートにある日付を確認しようとしています。System.out.printDate 変数を実行すると、セルの内容は同じです。テストが失敗するのはなぜですか?

@Test
public void testSpreadsheetCont() throws Exception {
    Date date = new Date();
    boolean success = false;
    FileInputStream fileInputStream = new FileInputStream("File Location.xls");
    HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);
    HSSFSheet worksheet = workbook.getSheetAt(0);
    HSSFRow row1 = worksheet.getRow(2);
    HSSFCell cell0 = row1.getCell(0);
    System.out.println(cell0.getDateCellValue());
    System.out.println(date);

    if (cell0.getDateCellValue() == date) {
        success = true;
    } else {
        success = false;
    }
    Assert.assertTrue(success);
}

エラーは、スプレッドシートを生成するクラスで日付をフォーマットする方法だと思います。としてフォーマットされてい("mm/dd/yyyy hh:mm")ます。しかし、日付変数をフォーマットし("mm/dd/yyyy hh:mm")て2つの要素を比較しようとすると、失敗します。

Date date = new Date();
SimpleDateFormat ft = new SimpleDateFormat("mm/dd/yyyy hh:mm");
if (cell0.getDateCellValue().toString() == ft.format(date)) {
    success = true;
} else {
    success = false;
}
4

2 に答える 2

2

比較のために以下を使用してください。もしかしたら、これが原因かもしれません。

if(cell0.getDateCellValue().compareTo(date)==0){
    success = true;
    }else{
        success = false;
    }
于 2013-07-15T15:48:14.823 に答える
2

2 つの Date 参照を比較しているため、機能しないのも不思議ではありません。常に false になります。

于 2013-07-16T08:02:20.853 に答える