java 线程 设置每周的某一天的某个时间执行一次,用哪个方法。SchedulerTask

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 线程 设置每周的某一天的某个时间执行一次,用哪个方法。SchedulerTask相关的知识,希望对你有一定的参考价值。

有多种思路可以实现。
最直接最简单就是用:java.util.Timer 类的
scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 方法。
第一个参数执行的任务,这个你应该知道了。第二个参数开始运行的时间,也就是第一次运行的时间。第三个参数是运行周期,以毫秒为单位。你可以算出一周时间的毫秒数为:

1000*60*60*24*7 = 604800000 毫秒。把这个作为第三个参数就行了。
也可以使用:schedule(TimerTask task, Date time) 方法
每次运行之后,用 new Date(time.getTime()+604800000) 的方法创建出下一周同一个时间,然后再次调用这个方法,用新日期作为参数。用这第二种方法可以实现你关掉程序,重新开之后,仍然会在指定时间运行,当然你要把这个日期保存下来,重开的时候加载。
参考技术A timer和timetask

PgSQL 将一年中的某一天恢复为日期

【中文标题】PgSQL 将一年中的某一天恢复为日期【英文标题】:PgSQL turning day-of-year back into date 【发布时间】:2013-04-13 08:43:25 【问题描述】:

我正在尝试确定如何在 PgSQL 中将一年中的某一天转回日期。当我这样做时

select date '2013-01-01' + interval '53 days'

我得到一个时间戳:

"2013-02-23 00:00:00"

那么当我执行以下任何操作时,怎么会发生

select extract(date from (date '2013-01-01' + interval '53 days'))

select extract(date from (select date '2013-01-01' + interval '53 days'))

我收到“错误:无法识别时间戳单位“日期””?除了为什么,我该怎么做,即只获取原始操作结果的日期部分?

【问题讨论】:

***.com/questions/6133107/… 【参考方案1】:

使用

select (date '2013-01-01' + interval '53 days')::date

select cast(date '2013-01-01' + interval '53 days' as date)

PostgreSQL's standard SQL function "extract()" 对时间戳进行操作,但是 a)“日期”不是 extract() 的有效参数,b)它返回子字段,而不是子字段的集合。从概念上讲,日期由三个子字段的集合组成:年、月和日。

select extract(year from current_timestamp),
       extract(month from current_timestamp),
       extract(day from current_timestamp),
       -- Concatenate and cast to type "date".
       (extract(year from current_timestamp) || '-' || 
       extract(month from current_timestamp) || '-' ||
       extract(day from current_timestamp))::date

【讨论】:

好的,谢谢。这样可行。那么我的概念有什么问题呢?如果 date + interval 构造返回一个时间戳,为什么提取函数不会对其进行操作? @Steve:扩大了答案。

以上是关于java 线程 设置每周的某一天的某个时间执行一次,用哪个方法。SchedulerTask的主要内容,如果未能解决你的问题,请参考以下文章

java如何实现在下个月的某一天自动获取某数据

oracle上个月某一天的数据

MySQL中, 如何查询某一天, 某一月, 某一年的数据.

推断一周的某一天的函数接口

JavaScript怎么获得某一天的前一天日期

crontab