【问题标题】:Get a Date instance for a day of week and time获取星期几和时间的日期实例
【发布时间】:2013-11-26 20:42:49
【问题描述】:

我有一个配置文件,我正在读取一周中的一天和一天中的 24 小时格式的时间。示例条目如下所示:

NextRun=Sunday|15:00:00

我会将它们解析为day 和time 变量。但是,我想找到下周日下午 3:00 的等效毫秒时间戳。

因此,例如,如果今天是周日下午 4:00 或周二凌晨 1:00,则将是下周日下午 3:00,但如果现在是周日下午 2:30,则预计时间将从现在开始 30 分钟。

【问题讨论】:

  • 我想你会想看看 JodaTime 及其时差 API,对于 example、example 和 example
  • 这是在客户端的网络上,所以很遗憾我不能为此使用 API。
  • @Sayak Joda-Time 是一个本地库,一个 .jar 文件,作为应用程序的一部分安装。不是网络服务等,因此不涉及网络。
  • 我看到了,但我也不能使用第三方库。感谢您的帮助,我现在解决了这个问题:)

标签: java date calendar


【解决方案1】:

获取一个日历实例并将其设置为解析的时间和日期。如果已经过去,请添加一周。

Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
c.set(Calendar.HOUR_OF_DAY, 15);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
if (c.getTimeInMillis() - Calendar.getInstance().getTimeInMillis() < 0)
    c.add(Calendar.DAY_OF_YEAR, 7);
return c.getTimeInMillis();

【讨论】:

    【解决方案2】:

    使用扩展Calendar 的GregorianCalendar。尝试类似:

    GregorianCalendar currentTime = new GregorianCalendar();
    GregorianCalendar targetTime = new GregorianCalendar();
    
    //Get Day and Time from config file
    targetTime.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    
    //Add a week if the targetTime is from last Sunday
    if (targetTime.before(currentTime))
    {
        targetTime.add(Calendar.DAY_OF_YEAR, 7);
    }
    
    System.out.println(currentTime.getTime().toString() + ", " + targetTime.getTime().toString());
    

    【讨论】:

    • 如果您使用的是全球时间,您可能还需要将配置文件中的时间转换为用户的区域设置。
    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    相关资源
    最近更新 更多