java 如何日期yyyy-mm-dd转换为yyyy/mm/dd_关于java:如何将字符串转换为yyyy-MM-dd HH:MM:ss格式的日期...

本问题已经有最佳答案,请猛点这里访问。

我有一个像"2015-07-16 17:07:21"这样的字符串。 我想将其转换为相同格式的日期。 我尝试过这样的事情:

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

Date date = sdf.parse("2015-07-16 17:07:21");

但是输出是不同的格式,例如Thu Jul 16 17:00:21 IST 2015。 我怎样才能使其按需工作。 谁能帮我。 我知道这可能是重复的,但我没有发现任何运气。

日期没有格式,它有一个表示时间点的值。如果要以某种格式显示它,则应使用SimpleDateFormat

我怎样才能做到这一点。您能给我一个例子或链接以供参考吗?

如果您希望将其设置为不同的格式,请使用所需的模式定义另一个SimpleDateformat并使用其设置日期格式。要清楚:您有一种SimpleDateformat解析输入,而另一种则用于打印输出。

至少有两个答案说明了这一点,让我更明确地说:日期不"具有格式"。日期是一个(大)整数,是自过去某个时间以来的毫秒数。 SimpleDateFormat是一种将字符串从特定格式转换为日期(使用parse())或将日期转换为字符串(使用format())的简便方法。

我建议您避免使用SimpleDateFormat类。它不仅已经过时,而且非常麻烦。今天,我们在java.time(现代Java日期和时间API)方面有了很多改进。

从Java API https://docs.oracle.com/javase/8/docs/api/java/util/Date.html

The class Date represents a specific instant in time, with millisecond precision.

尝试了解Date和DateFormat的区别/连接。

public static void main(String [] args) throws ParseException{

String dateString ="2015-07-16 17:07:21";

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

// use SimpleDateFormat to define how to PARSE the INPUT

Date date = sdf.parse(dateString);

// at this point you have a Date-Object with the value of

// 1437059241000 milliseconds

// It doesn't have a format in the way you think

// use SimpleDateFormat to define how to FORMAT the OUTPUT

System.out.println( sdf.format(date) );

sdf = new SimpleDateFormat();

System.out.println( sdf.format(date) );

// ....

}

输出:(请注意,日期保持不变,只是其表示形式(格式)发生了变化)

2015-07-16 17:07:21

7/16/15 5:07 PM

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());删除语言环境警告。

尝试使用此:

public static void main(String[] args) {

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateInString ="2015-07-16 17:07:21";

try {

Date date = formatter.parse(dateInString);

System.out.println(date);

System.out.println(formatter.format(date));

} catch (ParseException e) {

e.printStackTrace();

}

}

输出:

Thu Jul 16 17:07:21 IST 2015

2015-07-16 17:07:21

注意:

有关完整的日期和时间模式,请参考此http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

尝试像这样的格式字符串:yyyy-MM-dd HH:mm:ss

M:月,m:分钟

public static void main(String [] args){

String dateString ="2015-07-16 17:07:21";

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

Date date;

try {

date = sdf.parse(dateString);

} catch (ParseException e) {

e.printStackTrace();

return;

}

System.out.println(sdf.format(date));

System.out.println(dateString.equals(sdf.format(date)));

}

同样,日期没有格式,它具有代表时间点的值。如果要以某种格式显示它,则应使用SimpleDateFormat

我试过了。 它不起作用

sdf.format(date)再次返回String。

参见以下代码:

public static void main(String [] args){

String dateString ="2015-07-16 17:07:21";

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

Date date;

try {

date = sdf.parse(dateString);

} catch (ParseException e) {

e.printStackTrace();

return;

}

System.out.println(date); // Displays date in it's default format Jul 16 17:00:21 IST 2015

System.out.println(dateString.equals(date)); // Returns false since 'Jul 16 17:00:21 IST 2015' is not equal to dateString (2015-07-16 17:07:21)

}

Date类始终以其默认格式存储日期。 SimpleDateFormat帮助使用其对象格式化日期。它不会对日期类对象进行任何更改。而是将Date class转换为User defined格式,这对Date类对象没有任何影响。我想这很清楚。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值