美文网首页
Java 日期相关问题

Java 日期相关问题

作者: quiterr | 来源:发表于2017-01-12 17:12 被阅读0次

本文最早收集整理自骆昊的技术专栏,感谢他的分享,放在这里只为了写代码的时候方便参考。
后面本人也在不断收集添加其他有用的日期处理代码。

日期和时间相关问题:

  • 如何取得年月日、小时分钟秒?
  • 如何取得从1970年1月1日0时0分0秒到现在的毫秒数?
  • 如何取得某月的最后一天?
  • 如何格式化日期?
  • 获取一个Date的开始和结束,比如输入"2017-01-19 09:33:00",要求输出"2017-01-19 00:00:00"和"2017-01-19 23:59:59",SQL查某天数据的时候可能用到。

如何取得年月日、小时分钟秒?

public class DateTimeTest {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        System.out.println(cal.get(Calendar.YEAR));
        System.out.println(cal.get(Calendar.MONTH));    // 0 - 11
        System.out.println(cal.get(Calendar.DATE));
        System.out.println(cal.get(Calendar.HOUR_OF_DAY));
        System.out.println(cal.get(Calendar.MINUTE));
        System.out.println(cal.get(Calendar.SECOND));

        // Java 8
        LocalDateTime dt = LocalDateTime.now();
        System.out.println(dt.getYear());
        System.out.println(dt.getMonthValue());     // 1 - 12
        System.out.println(dt.getDayOfMonth());
        System.out.println(dt.getHour());
        System.out.println(dt.getMinute());
        System.out.println(dt.getSecond());
    }
}

如何取得从1970年1月1日0时0分0秒到现在的毫秒数?

Calendar.getInstance().getTimeInMillis();
System.currentTimeMillis();
Clock.systemDefaultZone().millis(); // Java 8

如何取得某月的最后一天?

Calendar time = Calendar.getInstance();
time.getActualMaximum(Calendar.DAY_OF_MONTH);

如何格式化日期?

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;

class DateFormatTest {

    public static void main(String[] args) {
        SimpleDateFormat oldFormatter = new SimpleDateFormat("yyyy/MM/dd");
        Date date1 = new Date();
        System.out.println(oldFormatter.format(date1));

        // Java 8
        DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        LocalDate date2 = LocalDate.now();
        System.out.println(date2.format(newFormatter));
    }
}

补充:Java的时间日期API一直以来都是被诟病的东西,为了解决这一问题,Java 8中引入了新的时间日期API,其中包括LocalDate、LocalTime、LocalDateTime、Clock、Instant等类,这些的类的设计都使用了不变模式,因此是线程安全的设计。如果不理解这些内容,可以参考我的另一篇文章《关于Java并发编程的总结和思考》。

打印昨天的当前时刻

import java.util.Calendar;

class YesterdayCurrent {
    public static void main(String[] args){
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -1);
        System.out.println(cal.getTime());
    }
}

在Java 8中,可以用下面的代码实现相同的功能。

import java.time.LocalDateTime;

class YesterdayCurrent {

    public static void main(String[] args) {
        LocalDateTime today = LocalDateTime.now();
        LocalDateTime yesterday = today.minusDays(1);

        System.out.println(yesterday);
    }
}

获取一个Date的开始和结束

比如输入"2017-01-19 09:33:00",要求输出"2017-01-19 00:00:00"和"2017-01-19 23:59:59",SQL查某天数据的时候可能用到。

        //获取某个日期的开始时间
        public static Date getDayStartTime(Date d) {
         Calendar calendar = Calendar.getInstance();
         if(null != d) calendar.setTime(d);
         calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
         calendar.set(Calendar.MILLISECOND, 0);
         return calendar.getTime();
     }

         //获取某个日期的结束时间
         public static Date getDayEndTime(Date d) {
         Calendar calendar = Calendar.getInstance();
         if(null != d) calendar.setTime(d);
         calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
         calendar.set(Calendar.MILLISECOND, 999);
         return calendar.getTime();
     }

相关文章

  • Java 日期相关问题

    本文最早收集整理自骆昊的技术专栏,感谢他的分享,放在这里只为了写代码的时候方便参考。后面本人也在不断收集添加其他有...

  • Java日期相关操作

    1. Date 大多数方法已经废弃,目前保留且常用的方法如下: 2. Calendar 推荐使用Calendar来...

  • java日期周相关

    前段时间,17年11月份,化工项目中,客户提出要有按周统计的报表。所以搜了下日期中周相关的资料整合下。 有两个属性...

  • java 日期处理相关

    备忘用(๑•̀ㅂ•́)و✧ Date 基本只剩下这三个不过时且常用的。 Calendar SimpleDateFo...

  • java日期相关处理

    1.去重,累加,排序 2.日期相关操作 ``` python import tensorflow as tf pr...

  • Java CST 日期问题

    在做一个项目的过程中,出现了一个很奇怪的问题。就是修改一个项目的时候,从数据库中读取的时间显示是正确的,然后更新到...

  • Java相关问题

    查看Java版本:当同一台服务器上安装了多个版本的Java 时,不同版本的Java 所在的目录名是不同的,所以在检...

  • java 日期相关Date、SimpleDateFormat、C

    本篇文章主要摘录了4篇文章的内容,原文在文末在java中时间类主要有Date、Calendar、SimpleDat...

  • 日期相关

    1、获取当前日期的标准时间

  • 日期相关

    format: // 对Date的扩展,将 Date 转化为指定格式的String// 月(M)、日(d)、小时(...

网友评论

      本文标题:Java 日期相关问题

      本文链接:https://www.haomeiwen.com/subject/xxxjbttx.html