【问题标题】:Error when trying to parse ending date尝试解析结束日期时出错
【发布时间】:2013-10-06 22:03:36
【问题描述】:

好的,我很难理解在这种情况下我会做什么。我指定了一个当前日期,它获取执行特定操作的日期,然后我需要指定一个完成日期,以便该方法知道何时完成处理。

public void process() {
    currentDate = getCurrentDate();

    String dateStart = lotteryStart;
    String dateStop = getCurrentDate().toString();

    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm");

Date d1 = null;
Date d2 = null;

try {
    d1 = format.parse(dateStart);
    d2 = format.parse(dateStop);

    DateTime dt1 = new DateTime(d1);
    //DateTime dt2 = dt1.plusMinutes(10);
    DateTime dt2 = new DateTime(d2);
    sendMessage(Integer.toString(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60));
    if (dt2 == dt1.plusMinutes(1)) {
    //sendMessage(Integer.toString(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60));
    //if (Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 == 500) {
        durationReached = true;
    }

    } catch (Exception e) { e.printStackTrace(); }

}

如何设置结束日期,即开始日期之前的特定时间?例如,如果开始日期为 06/10/2013 23:02,则结束日期为 06/10/2013 23:05

完全无视

if (dt2 == dt1.plusMinutes(1)) {

除了时间越来越细就好了。

我不知道如何设置这个结束日期。任何帮助表示赞赏。

【问题讨论】:

标签: java date datetime jodatime simpledateformat


【解决方案1】:

1) DateTime 是不可变的,因此当您使用 dt1.plusMinutes(1)then 实例 dt1 时不会更改。
DateTime 的新实例被创建。因此,您应该将新实例分配给dt1

DateTime dt1 = new DateTime(d1).plusMinutes(1);
DateTime dt2 = new DateTime(d2); 

2) 不要将日期与== 进行比较,而应使用Object::equals(Object)

if (dt2.equals(dt1)) {

编辑
没有java.util.DateSimpleDateFormat,使用
DateTimeFormatterDateTimeFormat 解析DateTime 有更简单的方法。

DateTimeFormatter dtf = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm");
DateTime dt1 = dtf.parse(dateAsString);

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    相关资源
    最近更新 更多