当前位置: 首页 > 知识库问答 >
问题:

Java日历NextEvent方法[重复]

公西姚石
2023-03-14

我必须创建一个名为nextEvent的方法,它接收并返回一个表示此模式中的日期的String:“yyyyy-MM-dd HH: mm: ss”。我必须在此String中添加一个名为nrHourint以修改下一个事件的日期。我的问题是我不知道如何将int连接到string上...

代码:

 class Event {
 private Date dateStart, dateEnd;
 private String name;

 public Event(String dateStart, String dateEnd, String name) {
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     try {
         this.dateStart = format.parse(dateStart);
         this.dateEnd = format.parse(dateEnd);
     } catch (Exception e) {
         System.out.println("Not valid date format");
     }
     this.name = name;
 }
 
 public Date getDateStart() {
     return dateStart;
 }

 public Date getDateEnd() {
     return dateEnd;
 }

 public String getNume() {
     return name;
 }
 }




 class EventRecurrent extends Event {
 private int nrHours;
 private Date next;

 EventRecurrent(String dateStart, String dateEnd, String name, int nrHours) {
     super(dateStart, dateEnd, name);
     this.nrHours = nrHours;
 }

 public String nextEvent(String next) {

     // I dont know how can I add the nrHours to the String next

     return next;
 }
 }


 public class Main {
 public static void main(String[] args) {
     EventRecurrent er = new EventRecurrent("2019-03-09 22:46:00",
             "2019-03-09 23:00:00", "walk the dog", 24);
     System.out.println(er.nextEvent("2019-04-19 22:46:23"));
     // 2019-04-20 22:46:00
 }

}

In the Main是一个例子:如果nextEvent收到“2019-04-19 22:46:23”,而nrHour是24,那么它应该打印出来:2019-04-20 22:46:00

java.text.* 和 java.util.* 已导入

共有2个答案

姜乐家
2023-03-14

将日期和时间作为字符串传递是一个非常糟糕的设计。使用LocalDateTimeZonedDateTime,您的任务将是微不足道的。在任何情况下,我都建议您使用java.time,现代Java日期和时间API,用于您的所有日期和时间工作。提到的两个类是该API的一部分。

但是,如果您坚持使用糟糕的设计,则必须将字符串转换为上述类型之一,添加小时数并转换回来。对于转换,我们需要一个格式化程序。

protected static final DateTimeFormatter FORMATTER
        = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");

现在你的方法变成了:

public String nextEvent(String next) {
    LocalDateTime dateTime = LocalDateTime.parse(next, FORMATTER);
    dateTime = dateTime.plusHours(nrHours);
    return dateTime.format(FORMATTER);
}

Oracle教程:Date Time讲解如何使用java.time.

吕翰飞
2023-03-14

这样你可以增加时间。

    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = formatter.parse(next);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.HOUR, 2);
    System.out.println(calendar.getTime());
 类似资料:
  • 我正在寻找确切的开始和结束日期根据我们的桌面日历,如果我给周,年作为输入。但是上面的代码给出的输出是2009年1月27日星期日。我知道这是因为按照我们的说法,一周的第一天默认是星期天,但我需要按照桌面日历

  • Outlook Calendar有开发文档吗 我想通过java代码在outlook创建一个重复的日历,创建一个每天、每周重复的日历,要怎么实现 我尝试过这种,但是只能创建连续的日历,没有办法创建周期重复的日历

  • 本文向大家介绍jQuery简单实现日历的方法,包括了jQuery简单实现日历的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery简单实现日历的方法。分享给大家供大家参考。具体分析如下: 原理挺简单的,首先算出一个月有多少天,再算出这个月的第一天是星期几,接着顺序排下来就可以了. 希望本文所述对大家的jQuery程序设计有所帮助。

  • 本文向大家介绍C#简单输出日历的方法,包括了C#简单输出日历的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#简单输出日历的方法。分享给大家供大家参考。具体如下: 用C#输出日历,此功能可用于Ajax方式列出计划日程相关的内容,由于是C#控制输出,可以方便加上自己需要的业务处理逻辑。 1.控制台输出: 效果图:   2.Html表格输出: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍PHP简单创建日历的方法,包括了PHP简单创建日历的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP简单创建日历的方法。分享给大家供大家参考,具体如下: 运行结果如下图所示: 关于在线显示日期还可参考本站在线工具: 在线万年历日历 网页万年历日历 在线万年历黄历flash版 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php日期与时间用法总结》、《PHP数学