使用jodatime无法从Java当前日期中扣除一天

时间:2016-04-01 07:31:54

标签: java date datetime jodatime

我使用JodaTime从当前日期中扣除一天。但它不适合我,这意味着,我的日期保持不变,没有任何扣除!

这是代码,

public class Note {
    private java.sql.Date date;

    public java.sql.Date getDate() {
        return date;
    }

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


Note notez=new Note();

notez.setDate(new java.sql.Date(new DateTime(new  Date()).minus(1).toDate().getTime()));

对此有任何想法。

谢谢。

4 个答案:

答案 0 :(得分:4)

DateTime.minus(long)将扣除传递给方法的毫秒数。

您正在寻找的是DateTime.minusDays(int)

检查Javadoc

答案 1 :(得分:3)

试试这个:

notez.setDate(new java.sql.Date(new DateTime(new  Date()).minusDays(1).toDate().getTime()));

答案 2 :(得分:1)

为什么不使用 java.util.Calendar&而是java.util.Date。

它很容易就像这样

import java.util.Calendar;
import java.util.Date;

...

    Date today = new Date();
    Calendar c = Calendar.getInstance(); 
    c.setTime(today); 
    c.add(Calendar.DATE, -1); //-1 parameter indicates number of days you wish to add/deduct,
    Date yesterday = c.getTime();



notez.setDate(yesterday);

答案 3 :(得分:1)

LocalDate

java.sql.Date表示仅限日期的值,没有时间和没有时区。与不幸名称java.util.Date不同,LocalDate代表日期和时间。

适当的Joda-Time类将为LocalDate

虽然DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ); LocalDate today = LocalDate.now( zone ); LocalDate yesterday = today.minusDays( 1 ); 不存储时区,但时区对于确定“今天”至关重要。就在巴黎午夜过后,蒙特利尔仍然是“昨天”。

LocalDate::toString

转换为java.sql类型。 java.sql.Date.valueOf方法生成根据ISO 8601标准YYYY-MM-DD格式化的文本。对于仅限日期的值,恰好与java.sql.Date sqlDate = java.sql.Date.valueOf( yesterday.toString() ); 方法所期望的SQL格式相同。

<script type="text/javascript">
var uploader = new plupload.Uploader({
    runtimes : 'html5,flash,silverlight,html4',
    browse_button : 'pickfiles',
    container: document.getElementById('container'),
    url : '<?php echo WEBSITE_CNST_URL?>/upload.inc.php?adid=<?php echo $adid ?>',
    resize : { width : 1024, height : 768, quality : 80 },   


    flash_swf_url : '<?php echo WEBSITE_URL ?>/js/Moxie.swf',
    silverlight_xap_url : '<?php echo WEBSITE_URL ?>/js/Moxie.xap',

    filters : {
        max_file_size : '4mb',
        mime_types: [
            {title : "Image files", extensions : "jpg,gif,png"}
        ]
    },

顺便说一下......如果你使用Java 8及更高版本中内置的java.time框架代替Joda-Time,代码将与此处显示的几乎相同。 Joda-Time的制造商要求我们尽快迁移到java.time。