date数据类型转换为另一种格式的date类型

Andyagg 发布于 2018/04/24 17:09
阅读 2K+
收藏 0

本来是想将字符串类型的数据转换成date类型的数据,然后再转化成另一种格式的date类型数据结果只是把字符串类型转换成date类型,date类型的格式并没有改变,代码如下,这是为什么??

public Date StringChange() {
        String str = "Thu Apr 19 16:45:03 +0800 2018";
     SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH🇲🇲ss Z yyyy",Locale.ENGLISH);
        Date date = sdf.parse(str);
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH🇲🇲ss");
        Date date1 = sdf1.parse(sdf1.format(date));
        //String newStr = sdf1.format(date);
        return  date1;
    }

加载中
0
CodeZero
CodeZero

你这个转换没有意义啊,你直接把String的日期字符串Parse成Date就行了,至于为什么格式没有改变,估计你StringChange之后,是直接用ToString()打印日期了,ToString()就是用默认格式取格式化Date,而默认格式就是EEE MMM dd HH:mm:ss Z yyyy,你自己说为什么不变了

Andyagg
Andyagg
那我用字符串“Thu Apr 19 16:45:03 +0800 2018”转换为这种格式的date类型yyyy-MM-dd HH:mm:ss不行啊,我最终需要的是yyyy-MM-dd HH:mm:ss这种类型的date数据,你有办法吗
0
CodeZero
CodeZero

sdf1.ToString(date)

Andyagg
Andyagg
sdf1.ToString(date)这样不行啊出错,只能写成sdf1.ToString(),就不报错了,但是这样就没有意义了吧
0
CodeZero
CodeZero

String通过SimpleDateFormat之后转成Date,在内存中的格式都是一样的,最终怎么打印出来,都是通过SimpleDateFormat的ToString(Date)来的

0
CodeZero
CodeZero

sdf1.format(date)

Andyagg
Andyagg
sdf1.format(date)这种方式转换出来的是字符串类型的,我想要date类型的
0
魔力猫
魔力猫

推荐使用JDK8的新API,简单,性能更好。

Andyagg
Andyagg
嗯嗯。我试试看
0
胃在烧
胃在烧

哥们你理解的有问题,Date类型存储的只是一个数字,内部并不存储自己是什么格式。你说的格式没有变化,是因为Date默认的ToString方法输出的是Wed Apr 25 11:12:03 CST 2018这种格式。如果你想输出某种格式的时间,只能把他转换成字符串。

        String str = "Thu Apr 19 16:45:03 +0800 2018";
        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
        Date date = sdf.parse(str);
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf1.format(date));

 

 

Andyagg
Andyagg
嗯嗯。这么一说。我倒是有点明白了
返回顶部
顶部