Java?如何獲取某年的第一天和最后一天
Java 獲取某年的第一天和最后一天
在統(tǒng)計(jì)的數(shù)據(jù)是時(shí)候,要統(tǒng)計(jì)某年的數(shù)據(jù)。開始時(shí)間是某年的第一天,結(jié)束時(shí)間是某年的最后一天。該如何獲取某年的第一天和最后一天:
獲取當(dāng)年的第一天和最后一天
private static String datePattern = "yyyy-MM-dd"; /** * 時(shí)間轉(zhuǎn)時(shí)間字符串 * @param date 日期 * @param pattern 格式 * @return String */ public static String format(Date date, String pattern) { if (date == null) return ""; return DateFormatUtils.format(date, pattern); } /** * 時(shí)間轉(zhuǎn)時(shí)間字符串為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); } /** * 時(shí)間字符串轉(zhuǎn)化為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; } /** * 字符串轉(zhuǎn)時(shí)間 * @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; } /** * 獲取當(dāng)年的第一天 */ public static Date getCurrentFirstOfYear(){ Calendar currCal=Calendar.getInstance(); int currentYear = currCal.get(Calendar.YEAR); return getFirstOfYear(currentYear); } /** * 獲取當(dāng)年的最后一天 */ 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)); }
結(jié)果:
=========current year=========
2022-01-01
2022-12-31
知道了當(dāng)前年怎么獲取,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)); }
結(jié)果:
=========before year=========
2012-01-01
2012-12-31
總結(jié):
獲取某年的年份的第一天和最后一天,先獲取某年的年份,這個(gè)應(yīng)該有很多種方式,再獲取當(dāng)年的第一天和最后一天
java獲取本月開始時(shí)間和結(jié)束時(shí)間、上個(gè)月第一天和最后一天的時(shí)間以及當(dāng)前日期往前推一周、一個(gè)月
1、java獲取本月開始時(shí)間和結(jié)束時(shí)間、上個(gè)月第一天和最后一天的時(shí)間以及當(dāng)前日期往前推一周、一個(gè)月
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import org.junit.Test; public class TestDateUtil { //1、獲取當(dāng)月第一天 @Test public void testForDate(){ //規(guī)定返回日期格式 SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar=Calendar.getInstance(); Date theDate=calendar.getTime(); GregorianCalendar gcLast=(GregorianCalendar)Calendar.getInstance(); gcLast.setTime(theDate); //設(shè)置為第一天 gcLast.set(Calendar.DAY_OF_MONTH, 1); String day_first=sf.format(gcLast.getTime()); //打印本月第一天 System.out.println(day_first); } //2、獲取當(dāng)月最后一天 @Test public void testForDatelast(){ //獲取Calendar Calendar calendar=Calendar.getInstance(); //設(shè)置日期為本月最大日期 calendar.set(Calendar.DATE, calendar.getActualMaximum(calendar.DATE)); //設(shè)置日期格式 SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); String ss=sf.format(calendar.getTime()); System.out.println(ss+" 23:59:59"); } //3、非常簡單和實(shí)用的獲取本月第一天和最后一天 @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);//設(shè)置為1號,當(dāng)前日期既為本月第一天 String first = format.format(c.getTime()); System.out.println("===============本月first day:"+first); //獲取當(dāng)前月最后一天 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、獲取上個(gè)月的第一天 @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("上個(gè)月第一天:"+format.format(calendar.getTime())); } //5、獲取上個(gè)月的最后一天 @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("上個(gè)月最后一天:"+sf.format(calendar.getTime())); } 6、獲取當(dāng)前日期的前一周或者前一個(gè)月時(shí)間 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); //從現(xiàn)在算,之前一個(gè)月,如果是2個(gè)月,那么-1-----》改為-2 Date dateFrom = cl.getTime(); return sdf.format(dateFrom); } @Test public void testStartDate(){ System.out.println("當(dāng)前日期往前推一個(gè)月是:"+getFirstDate()); //如果當(dāng)前日期是2015.11.08,那么打印日期是:20151008 } }
2、獲得當(dāng)天開始時(shí)間和結(jié)束時(shí)間
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); }
到此這篇關(guān)于Java 獲取某年的第一天和最后一天的文章就介紹到這了,更多相關(guān)Java 第一天和最后一天內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot線程池并發(fā)處理數(shù)據(jù)優(yōu)化方式
這篇文章主要介紹了Springboot線程池并發(fā)處理數(shù)據(jù)優(yōu)化方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Java?生成透明圖片的設(shè)置實(shí)現(xiàn)demo
這篇文章主要為大家介紹了Java?生成透明圖片的設(shè)置實(shí)現(xiàn)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02SpringCLoud搭建Zuul網(wǎng)關(guān)集群過程解析
這篇文章主要介紹了SpringCLoud搭建Zuul網(wǎng)關(guān)集群過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03SpringCloud Netfilx Ribbon負(fù)載均衡工具使用方法介紹
Ribbon是Netflix的組件之一,負(fù)責(zé)注冊中心的負(fù)載均衡,有助于控制HTTP和TCP客戶端行為。Spring Cloud Netflix Ribbon一般配合Ribbon進(jìn)行使用,利用在Eureka中讀取的服務(wù)信息,在調(diào)用服務(wù)節(jié)點(diǎn)時(shí)合理進(jìn)行負(fù)載2022-12-12java實(shí)現(xiàn)通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07java實(shí)現(xiàn)ip地址與十進(jìn)制數(shù)相互轉(zhuǎn)換
本文介紹在java中IP地址轉(zhuǎn)換十進(jìn)制數(shù)及把10進(jìn)制再轉(zhuǎn)換成IP地址的方法及實(shí)例參考,曬出來和大家分享一下2012-12-12Hibernate+JDBC實(shí)現(xiàn)批量插入、更新及刪除的方法詳解
這篇文章主要介紹了Hibernate+JDBC實(shí)現(xiàn)批量插入、更新及刪除的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Hibernate與JDBC針對數(shù)據(jù)庫的批量操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-11-11spring-data-redis自定義實(shí)現(xiàn)看門狗機(jī)制
redission看門狗機(jī)制是解決分布式鎖的續(xù)約問題,本文主要介紹了spring-data-redis自定義實(shí)現(xiàn)看門狗機(jī)制,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03