小编Ren*_*nee的帖子

来自Java Calendar操作的结果不一致

我有一个cron工作来清除超过某个月数(由用户设置)的数据.cron作业调用一个purgeData()方法来清除postgres表中的数据.我Calendar从当前日期(via GregorianCalendar.getInstance)操作java 来确定删除之前数据的目标日期.

我的问题是日历操作和/或将新操作的日历转换为字符串以便在postgres中使用偶尔会失败,将目标日期设置为删除当前日期之前的所有内容的当前日期,而不是早于1的数据(或#数月保持数月).

这是我简单的日期格式:

public static final SimpleDateFormat dateFormatter = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss.SSS");
Run Code Online (Sandbox Code Playgroud)

这是我的方法:

public String purgeData() throws ParseException {
    Connection con = null;
    String sqlString = "";
    PreparedStatement pst = null;
    String returnString = "";

    Calendar startDate = GregorianCalendar.getInstance();
    returnString += "# Months to keep data: " + getNumMonthsKeepData();
    startDate.add(Calendar.MONTH, getNumMonthsKeepData() * -1);
    String targetDate = dateFormatter.format(startDate.getTime());
    Calendar today = GregorianCalendar.getInstance();

    returnString +=" Target date (string): " + targetDate + " start …
Run Code Online (Sandbox Code Playgroud)

java static multithreading calendar thread-safety

3
推荐指数
1
解决办法
115
查看次数

标签 统计

calendar ×1

java ×1

multithreading ×1

static ×1

thread-safety ×1