向Calendar对象添加日期和时间

时间:2013-12-29 11:47:49

标签: java

我正在尝试将X天数(从1到180天)添加到Calender对象,然后构建一个新的时间戳以保存在DB中,其中包含新生成的日期+(时间=现在的时间)。下面的代码是我到目前为止所做的,所以有人可以帮我处理生成时间戳所需的任何代码示例,并使用新生成的日期+(时间=现在的时间)吗?

这是我目前使用的代码:

Date todayDate = new Date();        
Calendar c = Calendar.getInstance();

switch(daysToAdd){
case 1:
c.add(Calendar.DAY_OF_YEAR, 7);             
break;
case 2:
c.add(Calendar.DAY_OF_YEAR, 14);
break;
case 3:
c.add(Calendar.DAY_OF_YEAR, 21);
break;              
case 4:
c.add(Calendar.DAY_OF_YEAR, 30);
break;
case 5:
c.add(Calendar.DAY_OF_YEAR, 60);
break;              
case 6:
c.add(Calendar.DAY_OF_YEAR, 90);
break;              
case 7:
c.add(Calendar.DAY_OF_YEAR, 180);
break;                              
default: c.add(Calendar.DAY_OF_YEAR, 7);
}

Date enddate = c.getTime();

4 个答案:

答案 0 :(得分:1)

您可以根据原始日期对象实例化时间戳。接下来,您需要获取对正在用于执行操作/添加的Calendar实例的引用。

Date todayDate = new Date();
Timestamp original = new Timestamp(todayDate.getTime());
Calendar c = Calendar.getInstance();

c.setTimeInMillis(original.getTime());

添加和切换/大小写后,您可以实例化一个新的Timestamp实例来验证您的添加内容:

Timestamp later = new Timestamp(c.getTime().getTime());

假设您可以将天数作为方法参数传递,这里是您修改后的工作代码,假设硬编码的天数值:

public static void main(String[] args) {
        Date todayDate = new Date();
        Timestamp original = new Timestamp(todayDate.getTime());
        Calendar c = Calendar.getInstance();

        System.out.println("Old time : " + original.toString());

        c.setTimeInMillis(original.getTime());

        int daysToAdd = 5;

        switch (daysToAdd) {
        case 1:
            c.add(Calendar.DAY_OF_YEAR, 7);
            break;
        case 2:
            c.add(Calendar.DAY_OF_YEAR, 14);
            break;
        case 3:
            c.add(Calendar.DAY_OF_YEAR, 21);
            break;
        case 4:
            c.add(Calendar.DAY_OF_YEAR, 30);
            break;
        case 5:
            c.add(Calendar.DAY_OF_YEAR, 60);
            break;
        case 6:
            c.add(Calendar.DAY_OF_YEAR, 90);
            break;
        case 7:
            c.add(Calendar.DAY_OF_YEAR, 180);
            break;
        default:
            c.add(Calendar.DAY_OF_YEAR, 7);
        }

        Timestamp later = new Timestamp(c.getTime().getTime());
        System.out.println("New time : " + later.toString());
    }

上述代码的输出是(使用选项5添加60天):

Old time : 2013-12-29 18:30:41.541
New Date : 2014-02-27 18:30:41.541

答案 1 :(得分:0)

使用TimeStamp(long time)构造函数

Timestamp ts = new Timestamp(enddate.getTime());

甚至直接来自calander实例

Timestamp ts = new Timestamp(c.getTimeInMillis());

答案 2 :(得分:0)

使用Joda-Time 2.3库轻松。

DateTime dateTime = new DateTime().plusDays( yourNumber ).withTimeAtStartOfDay();

如有必要,转换为java.util.Date。

java.util.Date date = dateTime.toDate();

转换为java.sql.Date以与JDBC一起使用。

java.sql.Date date = new java.sql.Date( dateTime.getMillis() );

答案 3 :(得分:0)

通过使用Calendar对象的getTime()方法,我们可以返回Date Object。
但是没有直接从Calendar

返回Timestamp对象的方法

您可以使用Timestamp构造函数

Timestamp enddate = new Timestamp(c.getTimeInMillis());