Java 如何获取某年的第一天和最后一天

 更新时间:2023年07月21日 10:47:53   作者:天狼1222  
在统计的数据是时候,要统计某年的数据,开始时间是某年的第一天,结束时间是某年的最后一天,该如何获取某年的第一天和最后一天,今天通过本文介绍下Java获取某年的第一天和最后一天,需要的朋友可以参考下

Java 获取某年的第一天和最后一天

在统计的数据是时候,要统计某年的数据。开始时间是某年的第一天,结束时间是某年的最后一天。该如何获取某年的第一天和最后一天:

获取当年的第一天和最后一天

    private static String datePattern = "yyyy-MM-dd";
    /**
     *  时间转时间字符串
     * @param date  日期
     * @param pattern  格式
     * @return String
     */
    public static String format(Date date, String pattern) {
        if (date == null)
            return "";
        return DateFormatUtils.format(date, pattern);
    }
    /**
     *  时间转时间字符串为yyyy-MM-dd HH:mm:ss 格式
     * @param date  日期
     * @return String
     */
    public static String formatDateTime(Date date) {
        if (date == null)
            return "";
        return DateFormatUtils.format(date, datePattern);
    }
    /**
     *  时间字符串转化为yyyy-MM-dd HH:mm:ss 格式
     * @param str  日期
     * @return Date
     */
    public static Date parseDateTime(String str) {
        if (str == null)
            return null;
        try {
            return DateUtils.parseDate(str, datePattern);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     *  字符串转时间
     * @param str  字符串
     * @param dateTimePattern  格式
     * @return Date
     */
    public static Date parseDateTime(String str, String dateTimePattern) {
        if (str == null)
            return null;
        try {
            return DateUtils.parseDate(str, Locale.CHINESE, dateTimePattern);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 获取当年的第一天
     */
    public static Date getCurrentFirstOfYear(){
        Calendar currCal=Calendar.getInstance();
        int currentYear = currCal.get(Calendar.YEAR);
        return getFirstOfYear(currentYear);
    }
    /**
     * 获取当年的最后一天
     */
    public static Date getCurrentLastOfYear(){
        Calendar currCal=Calendar.getInstance();
        int currentYear = currCal.get(Calendar.YEAR);
        return getLastOfYear(currentYear);
    }
    /**
     * 获取某年第一天日期
     * @param year 年份
     * @return Date
     */
    public static Date getFirstOfYear(int year){
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        return calendar.getTime();
    }
    /**
     * 获取某年最后一天日期
     * @param year 年份
     * @return Date
     */
    public static Date getLastOfYear(int year){
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        calendar.roll(Calendar.DAY_OF_YEAR, -1);
        return calendar.getTime();
    }
    public static void main(String args[]) {
        System.out.println("=========current year=========");
        Date currentYearStart = getCurrentFirstOfYear();
        System.out.println(formatDateTime(currentYearStart));
        Date currentYearEnd = getCurrentLastOfYear();
        System.out.println(formatDateTime(currentYearEnd));
    }

结果:

=========current year=========
2022-01-01
2022-12-31

知道了当前年怎么获取,getLastOfYear(int year)

某年,求获取某年的年份就可以了,带入查询

获取某年的第一天和最后一天

/**
     * 获取某年第一天日期
     * @param date 日期
     * @return Date
     */
    public static Date getFirstOfYear(Date date){
//        int year = date.getYear(); // date.getYear 该方法被废弃了
        int year = Integer.parseInt(String.format("%tY",date));
        return getFirstOfYear(year);
    }
    /**
     * 获取某年最后一天日期
     * @param date 日期
     * @return Date
     */
    public static Date getLastOfYear(Date date){
        int year = Integer.parseInt(String.format("%tY",date));
        return getLastOfYear(year);
    }
    public static void main(String args[]) {
        System.out.println("=========before year=========");
        Date before = parseDateTime("2012-10-10 12:00:00");
        Date beforeYearStart = getFirstOfYear(before);
        System.out.println(formatDateTime(beforeYearStart));
        Date beforeEnd = getLastOfYear(before);
        System.out.println(formatDateTime(beforeEnd));
    }

结果:

=========before year=========
2012-01-01
2012-12-31

总结:

获取某年的年份的第一天和最后一天,先获取某年的年份,这个应该有很多种方式,再获取当年的第一天和最后一天

java获取本月开始时间和结束时间、上个月第一天和最后一天的时间以及当前日期往前推一周、一个月

1、java获取本月开始时间和结束时间、上个月第一天和最后一天的时间以及当前日期往前推一周、一个月

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import org.junit.Test;
public class TestDateUtil {
//1、获取当月第一天
@Test
public void testForDate(){
//规定返回日期格式
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar=Calendar.getInstance();
Date theDate=calendar.getTime();
GregorianCalendar gcLast=(GregorianCalendar)Calendar.getInstance();
gcLast.setTime(theDate);
//设置为第一天
gcLast.set(Calendar.DAY_OF_MONTH, 1);
String day_first=sf.format(gcLast.getTime());
//打印本月第一天
System.out.println(day_first);
}
//2、获取当月最后一天
@Test
public void testForDatelast(){
//获取Calendar
Calendar calendar=Calendar.getInstance();
//设置日期为本月最大日期
calendar.set(Calendar.DATE, calendar.getActualMaximum(calendar.DATE));
//设置日期格式
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
String ss=sf.format(calendar.getTime());
System.out.println(ss+" 23:59:59");
}
//3、非常简单和实用的获取本月第一天和最后一天
@Test
public void testt(){
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();    
       c.add(Calendar.MONTH, 0);
       c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 
       String first = format.format(c.getTime());
       System.out.println("===============本月first day:"+first);
       //获取当前月最后一天
       Calendar ca = Calendar.getInstance();    
       ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));  
       String last = format.format(ca.getTime());
       System.out.println("===============本月last day:"+last);
}
//4、获取上个月的第一天
@Test
public void getBeforeFirstMonthdate()throws Exception{
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar=Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
System.out.println("上个月第一天:"+format.format(calendar.getTime()));
}
//5、获取上个月的最后一天
@Test
public void getBeforeLastMonthdate()throws Exception{
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar=Calendar.getInstance();
int month=calendar.get(Calendar.MONTH);
calendar.set(Calendar.MONTH, month-1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println("上个月最后一天:"+sf.format(calendar.getTime()));
}
6、获取当前日期的前一周或者前一个月时间
 public static String getFirstDate(){
SimpleDateFormat  sdf = new SimpleDateFormat("yyyyMMdd");
Calendar cl = Calendar.getInstance();
// cl.setTime(dateNow);
// cl.add(Calendar.DAY_OF_YEAR, -1);
//一天
// cl.add(Calendar.WEEK_OF_YEAR, -1);
//一周
cl.add(Calendar.MONTH, -1);
//从现在算,之前一个月,如果是2个月,那么-1-----》改为-2
Date dateFrom = cl.getTime();
return sdf.format(dateFrom);
 }
 @Test
 public void testStartDate(){
 System.out.println("当前日期往前推一个月是:"+getFirstDate());
 //如果当前日期是2015.11.08,那么打印日期是:20151008
 }
}

2、获得当天开始时间和结束时间

public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        Date start = calendar.getTime();
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        calendar.add(Calendar.SECOND, -1);
        Date end = calendar.getTime();
        System.out.println(start);
        System.out.println(end);
    }

到此这篇关于Java 获取某年的第一天和最后一天的文章就介绍到这了,更多相关Java 第一天和最后一天内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot线程池并发处理数据优化方式

    Springboot线程池并发处理数据优化方式

    这篇文章主要介绍了Springboot线程池并发处理数据优化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java 生成透明图片的设置实现demo

    Java 生成透明图片的设置实现demo

    这篇文章主要为大家介绍了Java 生成透明图片的设置实现demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 浅析Java中的Caffeine缓存源码

    浅析Java中的Caffeine缓存源码

    这篇文章主要介绍了浅析Java中的Caffeine缓存源码,Caffeine是一个Java开发的高性能缓存库,它提供了一种简单而强大的方式来管理内存中的缓存数据,Caffeine的设计目标是提供快速、高效的缓存访问,同时保持简单易用的API,本文针对其部分源码做出解析,需要的朋友可以参考下
    2023-10-10
  • SpringCLoud搭建Zuul网关集群过程解析

    SpringCLoud搭建Zuul网关集群过程解析

    这篇文章主要介绍了SpringCLoud搭建Zuul网关集群过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • SpringCloud Netfilx Ribbon负载均衡工具使用方法介绍

    SpringCloud Netfilx Ribbon负载均衡工具使用方法介绍

    Ribbon是Netflix的组件之一,负责注册中心的负载均衡,有助于控制HTTP和TCP客户端行为。Spring Cloud Netflix Ribbon一般配合Ribbon进行使用,利用在Eureka中读取的服务信息,在调用服务节点时合理进行负载
    2022-12-12
  • Java封装好的mail包发送电子邮件的类

    Java封装好的mail包发送电子邮件的类

    本文给大家分享了2个java封装好的mail包发送电子邮件的类,并附上使用方法,小伙伴们可以根据自己的需求自由选择。
    2016-01-01
  • java实现通讯录管理系统

    java实现通讯录管理系统

    这篇文章主要为大家详细介绍了java实现通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • java实现ip地址与十进制数相互转换

    java实现ip地址与十进制数相互转换

    本文介绍在java中IP地址转换十进制数及把10进制再转换成IP地址的方法及实例参考,晒出来和大家分享一下
    2012-12-12
  • Hibernate+JDBC实现批量插入、更新及删除的方法详解

    Hibernate+JDBC实现批量插入、更新及删除的方法详解

    这篇文章主要介绍了Hibernate+JDBC实现批量插入、更新及删除的方法,结合实例形式较为详细的分析了Hibernate与JDBC针对数据库的批量操作相关实现技巧,需要的朋友可以参考下
    2017-11-11
  • spring-data-redis自定义实现看门狗机制

    spring-data-redis自定义实现看门狗机制

    redission看门狗机制是解决分布式锁的续约问题,本文主要介绍了spring-data-redis自定义实现看门狗机制,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03

最新评论