在java中将字符串日期转换为美国格式

2024-05-16

我有下面的代码,其中日期为字符串类型,我必须将其设置为美国格式 所以下面我已经展示了它

private static final SimpleDateFormat usOutputDate =  new SimpleDateFormat("MM/dd/yyyy");

在方法内部我编写了以下代码和内部dealDateString该值是02-Mar-2015

// dealDateString = 02-Mar-2015 
java.util.Date  dealDate = extractDate(dealDateString); 
//here its value get converted in US format that is 03/02/2015
String dd = usOutputDate.format(dealDate); 

DateFormat format = new SimpleDateFormat("MM/dd/yyyy", Locale.US); 
// ***issue comes here as it get back converted in US format ***
java.util.Date date =  format.parse(dd);
brokerInvoiceLineItem.setDealDate(new Date(date));

如上面的代码所示,这就是里面的值String dd is 03/02/2015但问题出在格式变量上 它的值被转换回英国格式,我不想要请告知我如何将其转换为英国格式,因为它 已转换为先前存储在其中的美国格式String dd.


The 接受的答案 https://stackoverflow.com/a/34504314/642706通过 Silambarasan Poonguti 和其他答案 https://stackoverflow.com/a/34504277/642706Ramesh Ponnada 的观点都是正确的。但两者都已经过时了,使用与最早版本的 Java 捆绑在一起的旧日期时间类。事实证明,这些类很麻烦、令人困惑并且存在缺陷。

java.time

The java.time http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.htmlJava 8 中内置的框架,后来取代了旧的 java.util.Date/.Calendar 类。新课程的灵感来自于非常成功的乔达时间 http://www.joda.org/joda-time/框架,旨在作为其继承者,概念相似但重新架构。被定义为JSR 310 http://jcp.org/en/jsr/detail?id=310。扩展为三十额外 http://www.threeten.org/threeten-extra/项目。请参阅甲骨文教程 http://docs.oracle.com/javase/tutorial/datetime/TOC.html.

LocalDate

这些新课程包括LocalDate http://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html用于处理没有时间或时区的仅日期值。尽管 LocalDate 不包含时区,但请注意,时区对于确定“今天”等日期至关重要。世界各地的日期在任何时刻都不相同,因为东方新的一天黎明得更早。

LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) ) ;

解析字符串

要解析字符串,请指定编码模式。此模式与旧的 java.text.SimpleTextFormat 中使用的模式类似,但并不完全相同。所以一定要研究一下java.time.format.DateTimeFormatter http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html密切关注医生。

请注意,我们使用三元组M指定我们期望日期名称的缩写。这是解决问题中问题的关键。

另请注意,我们指定了一个 Locale,它告诉 java.time 我们期望该日期缩写名称的人类语言。

String input = "02-Mar-2015";
Locale locale = Locale.US;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "dd-MMM-yyyy" ).withLocale ( locale );
LocalDate localDate = LocalDate.parse ( input , formatter );

转储到控制台。默认情况下toStringjava.time 中的方法使用标准ISO 8601 https://en.wikipedia.org/wiki/ISO_8601格式。

System.out.println ( "localDate: " + localDate );

本地日期: 2015-03-02

生成字符串

当生成日期时间值的字符串表示形式时,通常最好让 java.time 为您本地化它,而不是采用特定的格式。这java.time.format http://docs.oracle.com/javase/8/docs/api/java/time/format/package-summary.html包中有用于此类工作的类。

请注意调用withLocale。区域设置指定两个元素:预期格式的文化规范以及用于日期和月份名称的人类语言。如果不指定区域设置,则隐式应用 JVM 当前的默认区域设置。最好明确一点,因为默认值可以随时更改。

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate ( FormatStyle.SHORT ).withLocale ( Locale.US );
String output = today.format ( formatter );

转储到控制台。

System.out.println ( "output: " + output );

输出:2015 年 12 月 29 日

如果您坚持使用特定格式,请指定编码模式。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "MM/dd/yyyy" );
String output = today.format ( formatter );

输出:2015年12月29日

转换

如果您手头有 java.util.Date,请转换为 java.time。一个Instant http://docs.oracle.com/javase/8/docs/api/java/time/Instant.html是时间线上的一个时刻UTC https://en.wikipedia.org/wiki/Coordinated_Universal_Time.

Instant instant = myJUDate.toInstant();

指定您想要形成日期的时区,产生ZonedDateTime.

ZoneId zoneId = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId ) ;

然后要求生成一个 LocalDate,其值从 ZonedDateTime 中提取。

LocalDate localDate = zdt.toLocalDate();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在java中将字符串日期转换为美国格式 的相关文章

  • 是否可以在 Spring Batch 中结合分区和并行步骤?

    我只是想知道它在 Spring Batch 中可行吗 Step1Step2 流程 gt 流程1 流程2 流程3 Step3 其中每个flow1 gt 划分为 5 个 GridSizeflow2 gt 划分为 5 个 GridSizeflow
  • Spring控制器是线程安全的吗

    我遇到了这个控制器示例 想知道它是否是线程安全的 我特别想知道 gson 实例变量 import org springframework stereotype Controller import org springframework we
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • cucumber-junit-platform-engine 中的功能文件发现

    In cucumber junit我使用的库 CucumberOptions定义功能文件位置 package com mycompany cucumber import cucumber api CucumberOptions import
  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • 如何将实例变量传递到 Quartz 作业中?

    我想知道如何在 Quartz 中外部传递实例变量 下面是我想写的伪代码 如何将 externalInstance 传递到此作业中 public class SimpleJob implements Job Override public v
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public

随机推荐