日期格式化类SimpleDateFormat

1-日期转字符串

package date;
  
//
import java.text.SimpleDateFormat;
import java.util.Date;
  
public class TestDate {
  
    public static void main(String[] args) {
          
        //y 代表年
        //M 代表月
        //d 代表日
        //H 代表24进制的小时
        //h 代表12进制的小时
        //m 代表分钟
        //s 代表秒
        //S 代表毫秒
        SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );//创建一个格式化对象sdf
        Date d= new Date();
        String str = sdf.format(d);//通过sdf地方法format格式化参数d(当前时间),保存在str中

        System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
         
        SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );
        Date d1= new Date();
        String str1 = sdf1.format(d1);
        System.out.println("当前时间通过 yyyy-MM-dd 格式化后的输出: "+str1);
         
    }
}

2-字符串转日期

package date;
  
//
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
  
public class TestDate {
  
    public static void main(String[] args) {
        SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );//创建一个格式化对象sdf
  
        String str = "2016/1/5 12:12:12";
          
        try {
            Date d = sdf.parse(str);//通过方法parse,str字符串为参数转化为d
            System.out.printf("字符串 %s 通过格式  yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,d.toString());
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }//这样理解,try里面时符合条件的,catch里面时不符合条件出现的异常给出的异常提示!
          

    }
}

 

这里给出一道例题,随机日期时间,根据时间排序,不管日期年份

package date;

 

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

 

public class TestDate {

 

    @SuppressWarnings("deprecation")

    public String randomDate(int start, int end) {

 

        Date dStart = new Date((start - 1900), 0, 1, 0, 0, 0);

        Date dEnd = new Date((end - 1900), 0, 1, 0, 0, 0);

        long s = dEnd.getTime() - dStart.getTime();

        long ra = (long) (Math.random() * s) + 1;

 

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        Date dRandom = new Date(dStart.getTime() + ra);//这里得到一个随机日期字符串

        String dateStr = sdf.format(dRandom);//通过格式转换成格式化字符串

 

        return dateStr;

    }

 

    public static void main(String[] args) {

 

        TestDate sdft = new TestDate();

        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        /**

         * 准备一个长度是9的日期数组 使用1970年-2000年之间的随机日期初始化该数组 按照这些日期的时间进行升序排序 比如 1988-1-21

         * 12:33:22 就会排在 1978-4-21 19:07:23 前面,因为它的时间更小,虽然日期更大

         */

        String[] dArr = new String[9];

        for (int i = 0; i < dArr.length; i++) {

            dArr[i] = sdft.randomDate(1970, 2000);

            System.out.println("排序前:" + dArr[i]);

        }

 

        /**

         * 冒泡排序

         * 比较 时间先后 不管日期大小

         */

        for (int i = 0; i < dArr.length; i++) {

            for (int j = 0; j < dArr.length - i - 1; j++) {

                String nStr = "1970-01-01 " + dArr[j].split(" ")[1];//巧妙抓住分隔符空格,加同一个日子转换成date转化标准格式

                String nStr2 = "1970-01-01 " + dArr[j + 1].split(" ")[1];

                try {

                    if(sdf2.parse(nStr).getTime() > sdf2.parse(nStr2).getTime()){//通过parse变成date类型再gettime比较大小

                        String temp = dArr[j];

                        dArr[j] = dArr[j + 1];

                        dArr[j + 1] = temp;

                    }

                } catch (ParseException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

            }

        }

 

        for (int i = 0; i < dArr.length; i++) {

            System.out.println("排序后:" + dArr[i]);

        }

 

    }

 

}

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );//创建一个格式化对象sdf
        Date d= new Date();
        String str = sdf.format(d);//通过sdf地方法format格式化参数d(当前时间),保存在str中

总的来说,sdf通过format格式化date类存放到字符串str中

而Date d = sdf.parse(str);//通过方法parse,str字符串为参数转化为d

sdf通过parse将str已经格式化好的字符串转化为date对象

另外,gettime时date的专利,目前来说

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值