日期格式化

/*

  • 准备一个长度是9的日期数组
    使用1970年-2000年之间的随机日期初始化该数组
    按照这些日期的时间进行升序排序
    比如 1988-1-21 12:33:22 就会排在 1978-4-21 19:07:23 前面,因为它的时间更小,虽然日期更大

*/

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDate3 {
	public static String toString(Date d) {
        return toString(d, "yyyy-MM-dd HH:mm:ss");
    }
	
	 public static String toString(Date d, String format) {
	        SimpleDateFormat sdf = new SimpleDateFormat(format);
	        return sdf.format(d);
	    }
	 
	private static Date getRandomDate(int yearStart,int yearEnd){
		SimpleDateFormat sdf =new SimpleDateFormat("yyyy");
		try{
			Date dstart  = sdf.parse(String.valueOf(yearStart));//1970
			Date dend = sdf.parse(String.valueOf(yearEnd+1));//2001不是2000,要在2001的基础上减少1毫秒,才表示2000年的最后一刻
			long timeStart = dstart.getTime();
			long timeEnd = dend.getTime()-1;
			long timeRandom = (long)(timeStart+Math.random()*(timeEnd-timeStart));
			return new Date(timeRandom);
			
		}catch(ParseException e){
			e.printStackTrace();
		}
		return null;
	}
	
	//主函数
	public static void main(String[] args) {
		int yearStart = 1970;//起始年份
		int yearEnd = 2000;//结束年份
		Date []ds = new Date[9];//新建长度为9的数组,每一个位置为一个日期(年月日+时分秒)
		for(int i=0;i<ds.length;i++){//遍历数组,并调用getRandom函数为每一个位置进行赋值,即可得到随即日期数组
			ds[i]=getRandomDate(yearStart,yearEnd);
		}
		
		System.out.println("得到的随机日期数组是:");//遍历数组并输出随即日期
		for(int i=0;i<ds.length;i++){
			System.out.printf(toString(ds[i])+"\t");//调用toString方法,返回toString(Date d, String format)方法的结果
			if(i%3==2){
				System.out.println();
			}
		}
		
		//选择法排序,将时间按照升序排序
		for(int i = 0;i<ds.length-1;i++){
			for(int j =i+1;j<ds.length;j++){
				String str1 = toString(ds[i],"HHmmss");//调用toString方法,将时间转化为字符串
				String str2 = toString(ds[j],"HHmmss");
				int date1 = Integer.parseInt(str1);//将字符串转化为整型
				int date2 = Integer.parseInt(str2);
			//	System.out.println(date1);//这里输出的整型数值,如:时间为08:16:04,整型数值就为:081604,然后再进行大小比较
				if(date2<date1){比较转化成整型的时刻的值大小
					Date temp = ds[i];
					ds[i]=ds[j];
					ds[j]=temp;
				}
			}
		}
		
		
		
		System.out.println("随机排序后的随机日期数组:");//输出
		for(int i=0;i<ds.length;i++){
			System.out.printf(toString(ds[i])+"\t");//调用toString方法
			if(i%3==2){
				System.out.println();
			}
		}
		
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值