我有一个java.util.Date,格式为yyyy-mm-dd。 我希望它的格式为mm-dd-yyyy

以下是我尝试进行此转换的示例util:

// Setting the pattern

SimpleDateFormat sm = new SimpleDateFormat("mm-dd-yyyy");

// myDate is the java.util.Date in yyyy-mm-dd format

// Converting it into String using formatter

String strDate = sm.format(myDate);

//Converting the String back to java.util.Date

Date dt = sm.parse(strDate);

我得到的输出仍然不是mm-dd-yyyy格式。

请让我知道如何将java.util.Date从yyyy-mm-dd格式化为mm-dd-yyyy

您说的是什么意思。我有一个格式为yyyy-mm-dd的java.util.Date?

这意味着我的代码中用于显示到UI的当前格式为yyyy-mm-dd。

请把小毫米改为毫米

Date是一个容器,用于存储自Unix纪元(1970年1月1日00:00:00 UTC)以来的毫秒数。

它没有格式的概念。

Java 8+

LocalDateTime ldt = LocalDateTime.now();

System.out.println(DateTimeFormatter.ofPattern("MM-dd-yyyy", Locale.ENGLISH).format(ldt));

System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH).format(ldt));

System.out.println(ldt);

输出...

05-11-2018

2018-05-11

2018-05-11T17:24:42.980

Java 7-

您应该利用ThreeTen Backport

原始答案

例如...

Date myDate = new Date();

System.out.println(myDate);

System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(myDate));

System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(myDate));

System.out.println(myDate);

输出...

Wed Aug 28 16:20:39 EST 2013

08-28-2013

2013-08-28

Wed Aug 28 16:20:39 EST 2013

没有一种格式更改了基础Date值。这是DateFormatter的目的

更新了其他示例

万一第一个例子没有道理...

本示例使用两个格式化程序来格式化同一日期。然后,我使用这些相同的格式化程序将String值解析回Date s。结果分析不会改变Date报告其值的方式。

Date#toString只是其内容的转储。您不能更改它,但是可以按照自己喜欢的任何方式格式化Date对象

try {

Date myDate = new Date();

System.out.println(myDate);

SimpleDateFormat mdyFormat = new SimpleDateFormat("MM-dd-yyyy");

SimpleDateFormat dmyFormat = new SimpleDateFormat("yyyy-MM-dd");

// Format the date to Strings

String mdy = mdyFormat.format(myDate);

String dmy = dmyFormat.format(myDate);

// Results...

System.out.println(mdy);

System.out.println(dmy);

// Parse the Strings back to dates

// Note, the formats don't"stick" with the Date value

System.out.println(mdyFormat.parse(mdy));

System.out.println(dmyFormat.parse(dmy));

} catch (ParseException exp) {

exp.printStackTrace();

}

哪个输出...

Wed Aug 28 16:24:54 EST 2013

08-28-2013

2013-08-28

Wed Aug 28 00:00:00 EST 2013

Wed Aug 28 00:00:00 EST 2013

另外,请注意格式模式。仔细研究SimpleDateFormat,以确保您使用的不是错误的模式;)

好答案对我有所帮助。 试图运行命令行示例应用程序以测试格式(在Android类中使用之前)-找不到我需要的导入。 提供的答案中没有一个记得包含以下内容:import java.text.SimpleDateFormat;

代替

因为MM points Month,mm points minutes

SimpleDateFormat sm = new SimpleDateFormat("MM-dd-yyyy");

String strDate = sm.format(myDate);

除了此更改之外,我还需要在上述util方法中进行任何其他更改吗? 我无法立即对其进行测试,因此提出了这一要求。 另外,还有什么更好的格式化java.util.Date的方法吗?

@ user182944您可以在这里自己测试ideone.com

" M"(大写)代表月份," m"(简单)代表分钟

几个月的例子

'M' -> 7  (without prefix 0 if it is single digit)

'M' -> 12

'MM' -> 07 (with prefix 0 if it is single digit)

'MM' -> 12

'MMM' -> Jul (display with 3 character)

'MMMM' -> December (display with full name)

几分钟的例子

'm' -> 3  (without prefix 0 if it is single digit)

'm' -> 19

'mm' -> 03 (with prefix 0 if it is single digit)

'mm' -> 19

tl; dr

LocalDate.parse(

"01-23-2017" ,

DateTimeFormatter.ofPattern("MM-dd-uuuu" )

)

细节

I have a java.util.Date in the format yyyy-mm-dd

如其他提到的,Date类没有格式。自1970年UTC以来,它的毫秒数为单位。没有任何附加条件。

java.time

其他答案使用麻烦的旧式旧式日期时间类,现在由java.time类取代。

如果您有java.util.Date,请转换为Instant对象。 Instant类表示UTC时间轴上的时刻,分辨率为纳秒(十进制小数的九(9)位)。

Instant instant = myUtilDate.toInstant();

时区

其他答案则忽略了时区这一关键问题。确定日期需要一个时区。在任何给定时刻,日期都会在全球范围内变化。在巴黎午夜过后几分钟,法国是新的一天,而在魁北克蒙特利尔仍然是"昨天"。

定义您想要Instant上下文的时区。

ZoneId z = ZoneId.of("America/Montreal" );

应用ZoneId获得ZonedDateTime。

ZonedDateTime zdt = instant.atZone( z );

LocalDate

如果只关心日期而不是时间,请提取LocalDate。

LocalDate localDate = zdt.toLocalDate();

要生成标准ISO 8601格式的字符串YYYY-MM-DD,只需调用toString。生成/解析字符串时,默认情况下java.time类使用标准格式。

String output = localDate.toString();

2017-01-23

如果要使用MM-DD-YYYY格式,请定义格式格式。

DateTimeFormatter f = DateTimeFormatter.ofPattern("MM-dd-uuuu" );

String output = localDate.format( f );

请注意,格式化模式代码区分大小写。问题中的代码错误地使用了mm(小时数),而不是mm(一年中的月份)。

使用相同的DateTimeFormatter对象进行解析。 java.time类是线程安全的,因此您可以保留该对象,甚至在线程之间也可以重复使用。

LocalDate localDate = LocalDate.parse("01-23-2017" , f );

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧式旧式日期时间类,例如java.util.Date,Calendar和SimpleDateFormat。

现在处于维护模式的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。

在哪里获取java.time类?

Java SE 8和SE 9及更高版本

内置的

标准Java API的一部分,具有捆绑的实现。

Java 9添加了一些次要功能和修复。

Java SE 6和SE 7

java.time的许多功能在ThreeTen-Backport中都被反向移植到Java 6和7。

安卓系统

ThreeTenABP项目专门针对Android改编了ThreeTen-Backport(如上所述)。

请参阅如何使用ThreeTenABP…。

ThreeTen-Extra项目使用其他类扩展了java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。您可能会在这里找到一些有用的类,例如Interval,YearWeek,YearQuarter等。

下面的代码很容易使用。

final Date todayDate = new Date();

System.out.println(todayDate);

System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(todayDate));

System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(todayDate));

System.out.println(todayDate);

(A)此代码忽略了时区的关键问题。 (B)此代码使用了麻烦的旧日期时间类,这些类已经存在多年了。 避免他们。 由java.time类取代。

请将小写的" mm"月份更改为大写的" MM"。以下示例代码供参考。

**Date myDate = new Date();

SimpleDateFormat sm = new SimpleDateFormat("MM-dd-yyyy");

String strDate = sm.format(myDate);

Date dt = sm.parse(strDate);

System.out.println(strDate);**

java.util.date的格式_java.util.Date格式将yyyy-mm-dd转换为mm-dd-yyyy相关推荐

  1. java date sql和_Java.util.date 与 java.sql.date区别和转换

    1.将java.util.Date转换为java.sql.Date java.sql.Date sd; java.util.Date ud; //initialize the ud such as u ...

  2. java sql date 时分秒_java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间...

    java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Da ...

  3. java date 日期部分_Java处理Date时间格式的各种场景工具类(二)

    public class DateUtil { public enum DateType { YEAR, MONTH, DAY, HH, MI, SS, YYYY_MM_DD, YYYYMMDD } ...

  4. java 取10位时间戳_java里Date 10位时间戳(Timestamp) String 相互转换

    有很多注释,就不做过多解释了 import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseExcepti ...

  5. java sql date 加减_java.sql.Date 日期 加减天数的实现

    java.sql.Date 在数据库中存的基本格式:2016-02-24 00:00:00 java.sql.Date继承了java.util.Date 如下: public class Date e ...

  6. date在java中是什么类型_java中date 是什么类型

    满意答案 1engwen 2016.08.20 采纳率:41%    等级:8 已帮助:1115人 java语言中的date类介绍及使用 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于 ...

  7. java 查询日期行列转换_java中日期格式的转换和应用

    java中主要有3个类用于日期格式转换    DateFormat .SimpleDateFormat.Calendar SimpleDateFormat函数的继承关系: java.lang.Obje ...

  8. java的mysql语句规范_JAVA语言编程格式高级规范

    作为一位开发人员,都要有严格的代码规范.为此我总结了一些代码规范案例. 目 录 1. 前言 2. 试用范围 3. JAVA命名规范-- 3.1 公共约定 3.2 Java文件.包 3.3 类.接口命名 ...

  9. java 设置日期的格式_java设置日期格式

    { System.out.println("格式正确"); } else { System.out.println("格式错误"); } } } 一.简单的日期 ...

最新文章

  1. 「镁客·请讲」仙知机器人赵越:“能友好工作”的机器人才能真正的为人类服务...
  2. jQuery Mobile和PhoneGap混合开发
  3. 你如果只是一直囤干货,那永远不可能进步
  4. 2017 [六省联考] T5 分手是祝愿
  5. 跟我一起写 Makefile(八)
  6. 接口,抽象类与内部类
  7. Disruptor并发框架-1
  8. 实现JNI的另一种方法:使用RegisterNatives方法传递和使用Java自定义类 (转)
  9. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_8 Mybatis中的返回值深入-调整实体类属性解决增和改方法的报错...
  10. window 2012 上安装 sql server 2005 出错的解决方案
  11. 步进电机原理及参数详解
  12. H3C官方培训课件大全
  13. mp4视频文件截图--h264解码成yuv再转存为bmp图片
  14. 一个毕业生的年终总结
  15. 在那个时候根本没有计算机房,王德厚:我们现在的写作环境与王瑶先生那个时候没有根本区别...
  16. POJ1061 青蛙的约会
  17. BAPI_ACC_DOCUMENT_POST 创建凭证报错“被合并的公司 XXXX 和 XXXX 是不同的”
  18. Linux+开发+运维-推荐书籍与学习路线
  19. 带有滚动效果的ViewPager
  20. 总是跳转到国内版(cn.bing.com)?New Bing使用全攻略

热门文章

  1. 148. Sort List
  2. mac OS下显示.htaccess等隐藏文件
  3. 对顶层生存空间的考虑---及蜷缩在内层的EJB
  4. Silverlight 和WPF的Composite Guidance(Prism V2)发布了
  5. linux top命令增强版 htop简介
  6. linux rsync 增量同步备份文件
  7. linux su、su -和sudo的区别
  8. 编写 Debugging Tools for Windows 扩展,第 3 部分:客户端和回调 (windbg 插件 扩展)
  9. 深入解析Linux中的fork函数
  10. C++ 程序不一定从 main 处开始执行