-2

我需要处理日期,但我不确定如何在 Java 中进行处理,因为我以前从未这样做过。

我正在从 Excel 文件中提取日期,并且可以以代表日期的数据格式检索它们。

前任:

  1. 2010 年 2 月 1 日
  2. 2011 年 5 月 12 日
  3. 2011 年 8 月 15 日
  4. 2011 年 9 月 1 日
  5. 2011 年 9 月 1 日

我所有的代码都与这个问题无关,但我正在设置一个 getter/setter 方法:

public Date getDate() {
    return date;
}

public void setDate(Date date) {
    this.date = date;
}

所以我的问题是,当我从 Excel 中提取数据时以什么方式:

    temp.setDate((row.getCell(3).getDateCellValue());

我可以设置限制,使其仅检索 x 个月的数据。8、12等..从文件中显示的上个月/年开始,而不是一直追溯到2010年?如果需要,我可以提供更多详细信息。

编辑:这就是我现在拥有的:

   import java.util.Date;
    Date date;
   date = row.getCell(3).getDateCellValue();

它显示:Tue June 01 00:00:00

我不在乎星期二或 00:00:00,我只有一个完整的数据列表,我只想显示 x 个月。

编辑:我想通了。:)

4

3 回答 3

0

您必须使用 DateFormat.class 来解析单元格,或者使用日历来放置日月年

编辑

您也可以使用Calendar.class

final String[] tabDate = {"2/1/2010", "5/12/2011", "8/15/2011",
                           "9/1/2011", "9/1/2011"};
// Extract field's value
final Calendar c = Calendar.getInstance();

// Parse the list of stringDate
for (final String string : tabDate) {
    System.out.println("Input string: " + string);
    final String[] shortDate = string.split("/");

   // Build Calendar
    c.set(Integer.valueOf(shortDate[2]), Integer.valueOf(shortDate[0]),
        Integer.valueOf(shortDate[1]));

    // Extract date as you like
    System.out.format("%25s  : %d/%d/%d\t%s\n\n", c.getTime(),
        c.get(Calendar.MONTH), c.get(Calendar.DATE),
        c.get(Calendar.YEAR), c.getTimeInMillis());
}

安慰 :

Input string: 2/1/2010
Mon Mar 01 09:09:48 CET 2010  : 2/1/2010    1267430988109

Input string: 5/12/2011
Sun Jun 12 09:09:48 CEST 2011  : 5/12/2011  1307862588109

Input string: 8/15/2011
Thu Sep 15 09:09:48 CEST 2011  : 8/15/2011  1316070588109

Input string: 9/1/2011
Sat Oct 01 09:09:48 CEST 2011  : 9/1/2011   1317452988109

Input string: 9/1/2011
Sat Oct 01 09:09:48 CEST 2011  : 9/1/2011   1317452988109
于 2012-07-17T14:22:42.040 回答
0

这个问题很模糊,但如果您使用 Excel,我发现将文件另存为“filename.csv”非常有益。这种格式很容易使用,它是逗号分隔的,换行符是向下的。如果您定期检查月份,很容易确保您只倒退 x 个月。

于 2012-07-17T14:27:56.313 回答
0

首先,您需要使用 SimpleDateFormat 类相应地解析日期。结果是一个日期对象。

SimpleDateFormat df = new SimpleDateFormat( "M/d/yyyy" );
Date date = df.parse(row.getCell(3).getDateCellValue());

然后:

Calendar cal = Calendar.getInstance();

将返回一个对象 ob 类型 Calendar,您可以在其中设置日期

cal.setTime(date);

最后,您读取 Excel 文件的循环可以根据日历对象确定是否应包含/使用以下方法进一步处理日期:

int month = cal.get(Calendar.MONTH); // e.g. 11 for Nov
int year = cal.get(Calendar.YEAR); // e.g. 2011
于 2012-07-17T14:36:32.943 回答