java获取时间戳精确到毫秒(java获取时间戳精确到微秒讲解)
程序员文章站
2023-11-20 21:18:46
当前时间加上时间戳关于日期的计算,很多朋友们都喜欢用时间戳来直接相加,比如希望得到当前时间之后30天的时间,会这么写代码: 直接把 new data().gettime() 方法得到的时间戳加上30天...
当前时间加上时间戳
关于日期的计算,很多朋友们都喜欢用时间戳来直接相加,比如希望得到当前时间之后30天的时间,会这么写代码: 直接把 new data().gettime() 方法得到的时间戳加上30天对应的毫秒数,也就是30天 * 24小时 * 3600秒 * 1000毫秒
date today = new date();
date nextmonth = new date(today.gettime()+30*24*3600*1000);
system.out.println(today);
system.out.println(nextmonth);
得到的结果可能会让我失败:
sat jul 10 07:41:30 cst 2021
sun jun 20 14:38:43 cst 2021
得到的日期竟然比当前的日期还好早,你说怎么回事呢?
原因是:
因为 int 发生了溢出
怎样修改呢?我们只要把 30改成30l即可,让其成为long
date today = new date();
date nextmonth = new date(today.gettime()+30l*24*3600*1000);
system.out.println(today);
system.out.println(nextmonth);
结果:
sat jul 10 07:44:38 cst 2021
mon aug 09 07:44:38 cst 2021
使用calendar
在java8之前,我们一般使用calendar类来实现
calendar c = calendar.getinstance();
c.settime(new date());
system.out.println(c.gettime());
c.add(calendar.day_of_month,30);
system.out.println(c.gettime());
结果:
sat jul 10 07:47:25 cst 2021
mon aug 09 07:47:25 cst 2021
java 8 日期时间
使用 java 8 的日期时间类型,可以直接进行各种计算,更加简洁和方便:
localdatetime localdatetime = localdatetime.now();
system.out.println(localdatetime.plusdays(30));
下面介绍localdatetime的基本用法:
1) 获取一年、月、日
private localdatetime localdatetime = null;
@before
public void init(){
localdatetime = localdatetime.now();
}
@test
public void test1(){
system.out.println("year:"+localdatetime.getyear());
system.out.println("month:"+localdatetime.getmonth().getvalue());
system.out.println("day of month:"+localdatetime.getdayofmonth());
system.out.println("day of week:"+ localdatetime.getdayofweek());
system.out.println("day of year:"+localdatetime.getdayofyear());
}
结果:
year:2021
month:7
day of month:10
day of week:saturday
day of year:191
- 获取小时、分钟、秒
system.out.println("hour:"+localdatetime.gethour());
system.out.println("minute :"+localdatetime.getminute());
system.out.println("second:"+localdatetime.getsecond());
system.out.println("nano:"+localdatetime.getnano());
结果:
hour:8
minute :17
second:32
nano:50000000
- 对日期做加减
可以使用各种 minus 和 plus 方法直接对日期进行加减操作,比如如下代码实现了减一天和加一天,以及减一个月和加一个月
system.out.println("minus days:"+ localdatetime.minusdays(1));
system.out.println("minus months:"+localdatetime.minusmonths(1));
system.out.println("minus year: "+localdatetime.minusyears(1));
system.out.println("minus hours:"+localdatetime.minushours(1));
system.out.println("minus seconds:"+localdatetime.minusseconds(1));
- 时间的比较
localdatetime 类提供以下api比较localdatetime 对象在java中。
- boolean isafter(chronolocaldatetime other):检查此日期时间是否在指定日期时间之后。
- boolean isbefore(chronolocaldatetime other)
- boolean isequal(chronolocaldatetime other)
- int compareto(chronolocaldatetime other) 将此日期时间与其他日期时间进行比较。
localdatetime datetime1 = localdatetime.of(2021,5,7,9,22,22);
localdatetime datetime2 = localdatetime.of(2021,6,7,9,22,22);
localdatetime datetime3 = localdatetime.of(2021,5,7,9,22,22);
if(datetime1.isbefore(datetime2)){
system.out.println("datetime1 is before datetime2");
}
if(datetime2.isafter(datetime3)){
system.out.println("datetime2 is after datetime3");
}
if(datetime1.equals(datetime3)){
system.out.println("datetime1 is equal to datetime3");
}
if(datetime1.compareto(datetime3) ==0){
system.out.println("datetime1 is equal to datetime3");
}
- 通过 with 方法进行快捷时间调节
- 使用 temporaladjusters.firstdayofmonth 得到当前月的第一天;
- 使用 temporaladjusters.firstdayofyear() 得到当前年的第一天;
- 使用 temporaladjusters.previous(dayofweek.saturday) 得到上一个周六;
- 使用 temporaladjusters.lastinmonth(dayofweek.friday) 得到本月最后一个周五。
system.out.println("//本月的第一天");
system.out.println(localdate.now().with(temporaladjusters.firstdayofmonth()));
system.out.println("//今年的程序员日");
system.out.println(localdate.now().with(temporaladjusters.firstdayofyear()).plusdays(255));
system.out.println("//今天之前的一个周六");
system.out.println(localdate.now().with(temporaladjusters.previous(dayofweek.saturday)));
system.out.println("//本月最后一个工作日");
system.out.println(localdate.now().with(temporaladjusters.lastinmonth(dayofweek.friday)));
- 可以直接使用 lanbda 表达式进行自定义的时间调整
system.out.println(localdate.now().with(temporal -> temporal.plus(threadlocalrandom.current().nextint(100), chronounit.days)));
除了计算外,还可以判断日期是否符合某个条件。比如,自定义函数,判断指定日期是否是家庭成员的生日:
public class datetimetest {
private static localdatetime localdatetime = localdatetime.now();
public static void main(string[] args) {
system.out.println(isfamilybirthday(localdatetime));
}
public static boolean isfamilybirthday(localdatetime date) {
int month = date.getmonthvalue();
int day = date.getdayofmonth();
if (month == month.july.getvalue() && day == 10)
return boolean.true;
if (month == month.september.getvalue() && day == 21)
return boolean.true;
if (month == month.may.getvalue() && day == 22)
return boolean.true;
return boolean.false;
}
}
上一篇: javaweb之web入门基础
推荐阅读
-
Java获取精确到秒的时间戳方法
-
java获取时间戳精确到毫秒(java获取时间戳精确到微秒讲解)
-
java获取时间戳精确到毫秒(java获取时间戳精确到微秒讲解)
-
时间戳与时间相互转换(php .net精确到毫秒)
-
oracle获取当前时间,精确到毫秒并指定精确位数的实现方法
-
时间戳与时间相互转换(php .net精确到毫秒)
-
java Date日期时间相减 精确到毫秒
-
php如何获取当前时间戳精确到毫秒
-
Java8 LocalDateTime获取时间戳(毫秒/秒)、LocalDateTime与String互转、Date与LocalDateTime互转
-
《c/c++ 获取时间戳》——精确到毫秒