java根据当前时间获取时间段(年、月、日)

1.获取最近30天List

//'main' method must be in a class 'Rextester'.
//Compiler version 1.8.0_111

import java.util.*;
import java.lang.*;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

class Rextester
{
    
      
    public static void main(String args[])
    {
    
    
		List<String> dayList= getThisYearMonthDays();
		System.out.println(dayList.toString());
    }
    /**
     * 生成前30的日期
     * @return
     */
    public static List<String> getThisYearMonthDays(){
    
    
    	int monthDays=30;//近30天
    	//建一个容器
        List<String> listEveryDay= new ArrayList<String>();
        //获取日历对象
        Calendar calendar=Calendar.getInstance();
     	//规定时间格式
        DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
        //声明时间
        Date date=new Date();
        for(int i=0; i<monthDays;i++){
    
    
            calendar.setTime(date);//设置为当前时间
            calendar.add(calendar.DATE,-i);//每循环一次减一天
            String everyDate=dateFormat.format(calendar.getTime());//将date转为字符串
            listEveryDay.add(everyDate);//向list集合中添加
        }
        Collections.sort(listEveryDay);//排序
        return listEveryDay;
    }
}

结果:
在这里插入图片描述

2.获取最近一年的月份(最近12个月)

//'main' method must be in a class 'Rextester'.
//Compiler version 1.8.0_111

import java.util.*;
import java.lang.*;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

class Rextester
{
    
      
    public static void main(String args[])
    {
    
    
		List<String> monthList= getThisYearMonths();
		System.out.println(monthList.toString());
    }
    /***
     * 获取最近一年的月份
     * @return
     */
    public static List<String> getThisYearMonths(){
    
    
        //建一个容器
        List<String> months=new ArrayList<>();
        //获取日历对象
        Calendar calendar = Calendar.getInstance();
        //调整到12个月以前
        calendar.add(Calendar.MONTH,-11);
        //循环12次获取12个月份
        for (int i = 0; i < 12; i++) {
    
    
            //日历对象转为Date对象
            Date date = calendar.getTime();
            //将date转为字符串
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            String dateStr = sdf.format(date);
            //向list集合中添加
            months.add(dateStr);
            //每次月份+1
            calendar.add(Calendar.MONTH,1);
        }
        return months;
    }
}

结果:
在这里插入图片描述

3.获取时间的方式、方法

//'main' method must be in a class 'Rextester'.
//Compiler version 1.8.0_111

import java.util.*;
import java.lang.*;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

class Rextester
{
    
      
    public static void main(String args[])
    {
    
    
		//使用默认时区和语言环境获得一个日历。
		Calendar cal = Calendar.getInstance();
		int day = cal.get(Calendar.DATE);
		int month = cal.get(Calendar.MONTH) + 1;//第一个月从0开始,所以得到月份+1
		int year = cal.get(Calendar.YEAR);
		int dow = cal.get(Calendar.DAY_OF_WEEK);
		int dom = cal.get(Calendar.DAY_OF_MONTH);
		int doy = cal.get(Calendar.DAY_OF_YEAR);

		System.out.println("当期时间: " + cal.getTime());
		System.out.println("日期: " + day);
		System.out.println("月份: " + month);
		System.out.println("年份: " + year);
		System.out.println("一周的第几天: " + dow);  // 星期日为一周的第一天输出为 1,星期一输出为 2,以此类推
		System.out.println("一月中的第几天: " + dom);
		System.out.println("一年的第几天: " + doy);
 
		/*用Calendar的get(int field)方法返回给定日历字段的值。
		HOUR 用于 12 小时制时钟 (0 - 11),HOUR_OF_DAY 用于 24 小时制时钟。*/
		Integer hour12 = cal.get(Calendar.HOUR); 
		Integer hour24 = cal.get(Calendar.HOUR_OF_DAY);
		Integer minute = cal.get(Calendar.MINUTE);
		Integer second = cal.get(Calendar.SECOND);
		Integer millisecond = cal.get(Calendar.MILLISECOND);
		String TimeNow12 = year+"-"+month+"-"+day+" "+hour12+":"+minute+":"+second+":"+millisecond;
		String TimeNow24 = year+"-"+month+"-"+day+" "+hour24+":"+minute+":"+second+":"+millisecond;
		System.out.println("日历:"+cal.getTime()+"\n12小时制时钟:"+TimeNow12+"\n24小时制时钟:"+TimeNow24);
    }

}

结果:
在这里插入图片描述

4.根据自定义起始时间获取不同类型的时间段

//'main' method must be in a class 'Rextester'.
//Compiler version 1.8.0_111

import java.util.*;
import java.lang.*;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

class Rextester
{
    
      
    public static void main(String args[])
    {
    
    
		String startTime="2021-11-01";
		String endTime="2022-01-02";
		try{
    
    
			Set daySet= getDateSet(startTime,endTime, 0);
			System.out.println("天:\n"+daySet);//日 天
			Set monthSet= getDateSet(startTime,endTime,1);
			System.out.println("月:\n"+monthSet);//月
			Set yearSet= getDateSet(startTime,endTime, 2);
			System.out.println("年:\n"+yearSet);//年
		} catch (ParseException e) {
    
    
			e.printStackTrace();
		}
    }
    /**
     * 根据起始时间生成时间段 day  month year
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param index 索引类型 0:日 1:月 2:年
     * @return 返回时间段
     */
    public static Set getDateSet(String startTime, String endTime, Integer index) throws ParseException {
    
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // 将时间转换成时间戳
        Long startTimestamp = sdf.parse(startTime).getTime();
        Long endTimestamp = sdf.parse(endTime).getTime();

        Set timeSet = new TreeSet();
        //定义一个一天的时间戳时长
        Long oneDay = 1000 * 60 * 60 * 24L;
        Long time = startTimestamp;
        switch (index){
    
    
            case 0:
                //循环得出
                while (time <= endTimestamp) {
    
    
                    timeSet.add(new SimpleDateFormat("yyyy-MM-dd").format(new Date(time)));
                    time += oneDay;
                }
            case 1:
                //循环得出
                while (time <= endTimestamp) {
    
    
                    timeSet.add(new SimpleDateFormat("yyyy-MM").format(new Date(time)));
                    time += oneDay;
                }
            case 2:
                //循环得出
                while (time <= endTimestamp) {
    
    
                    timeSet.add(new SimpleDateFormat("yyyy").format(new Date(time)));
                    time += oneDay;
                }
        }
        return timeSet;
    }
}

结果:
在这里插入图片描述

おすすめ

転載: blog.csdn.net/firstlt0217/article/details/118219647