编程时候我们需要知道一个日期位于这一年的第几天或者第多少个小时等,可以使用一种较为简单的方法对此进行计算,主要使用java中的Date转换为long值后进行计算,主要思路为:将这个日期与开始日期均转换为long值进行相减,得到两个时间之间经过的毫秒数,除以每天、每小时、每分钟的毫秒数即可的到对应的结果。实现代码如下:
package frequencyConver;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* frequencyConver
* 青蛙大宝贝儿
* 2022-08-30 17:12
*/
public class test {
public static void main(String[] args) {
SimpleDateFormat formatter = new SimpleDateFormat("MM-dd HH:mm:ss");
//随意定义两个Date
Date fristTM = new Date(2020, 0, 0,0,0,0);
Date endTM = new Date(2020, 0, 2,1,4,0);
//获得这个日期位于该年的第几天(天为:1000 * 60 * 60 * 24)
Integer num_DAY = (int)Math.ceil((endTM.getTime() - fristTM.getTime()) / (1000 * 60 * 60 * 24)) ;
//获得这个日期位于该年的第几小时(小时为:1000 * 60 * 60)
Integer num_HOUR = (int)Math.ceil((endTM.getTime() - fristTM.getTime()) / (1000 * 60 * 60)) ;
//获得这个日期位于该年的第几分钟(分钟为:1000 * 60)
Integer num_MINUTE = (int)Math.ceil((endTM.getTime() - fristTM.getTime()) / (1000 * 60)) ;
//获得这个日期位于该年的第几秒(秒为:1000)
Integer num_SECOND = (int)Math.ceil((endTM.getTime() - fristTM.getTime()) / (1000)) ;
//结果输出
System.out.println(formatter.format(endTM)+"位于该年的第"+num_DAY+"天");
System.out.println(formatter.format(endTM)+"位于该年的第"+num_HOUR+"小时");
System.out.println(formatter.format(endTM)+"位于该年的第"+num_MINUTE+"分钟");
System.out.println(formatter.format(endTM)+"位于该年的第"+num_SECOND+"秒");
}
}
定义的日期为:2022-01-02 01:04:00
运行结果为:
简单心算一下,结果无误。