java西语_使用Java 8 DateTimeFormatter和西班牙语月份名称进行解析
可以删除对ofLocalizedDateTime()的调用,因为最后你调用ofPattern(),创建另一个格式不同的格式化程序(由ofLocalizedDateTime(FormatStyle.FULL)返回的模式与月份非常不同,所以这是不是你真正想要的).
另一个细节是Mayo是完整的月份名称,因此模式必须是MMMM(check the javadoc以获取更多详细信息).此外,默认情况下,DateTimeFormatter仅接受小写名称(至少在我使用西班牙语语言环境进行的测试中),因此您必须将格式化程序设置为不区分大小写.
您可以使用java.time.format.DateTimeFormatterBuilder来实现:
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
// case insensitive
.parseCaseInsensitive()
// pattern with full month name (MMMM)
.appendPattern("MMMM yyyy")
// set locale
.toFormatter(new Locale("es", "ES"));
// now it works
fmt.parse("Mayo 2017");
或者,您可以直接将其解析为java.time.YearMonth对象,因为它似乎是这种情况的最佳选择(因为输入只有年和月):
YearMonth ym = YearMonth.parse("Mayo 2017", fmt);
System.out.println(ym); // 2017-05
默认值
当输入没有所有字段时,SimpleDateFormat只是为它们使用一些默认值.在这种情况下,输入只有年和月,因此解析的日期将等于解析的月/年,但是日期将设置为1,时间将设置为午夜(在JVM默认时区).
新API对此非常严格,除非您告诉它,否则不会创建默认值.配置它的一种方法是使用parseDefaulting和java.time.temporal.ChronoField:
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
// case insensitive
.parseCaseInsensitive()
// pattern with full month name (MMMM)
.appendPattern("MMMM yyyy")
// default value for day of month
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
// default value for hour
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
// default value for minute
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
// set locale
.toFormatter(new Locale("es", "ES"));
这样,您可以将其解析为LocalDateTime,并将缺少的字段分配给相应的默认值:
LocalDateTime dt = LocalDateTime.parse("Mayo 2017", fmt);
System.out.println(dt); // 2017-05-01T00:00
如果需要获取与SimpleDateFormat创建的值相同的java.util.Date,可以将此LocalDateTime转换为JVM默认时区,然后将其转换为Date:
Date javaUtilDate = Date.from(dt.atZone(ZoneId.systemDefault()).toInstant());
请注意,我必须明确使用JVM默认时区(ZoneId.systemDefault()),这是SimpleDateFormat所使用的.
另一种方法是手动设置YearMonth值中的值:
// in this case, the formatter doesn't need the default values
YearMonth ym = YearMonth.parse("Mayo 2017", fmt);
ZonedDateTime z = ym
// set day of month to 1
.atDay(1)
// midnight at JVM default timezone
.atStartOfDay(ZoneId.systemDefault());
Date javaUtilDate = date.from(z.toInstant());
API使用IANA timezones names(总是采用Region / City格式,如America / New_York或Europe / Berlin),因此您可以调用ZoneId.of(“America / New_York”).
避免使用3个字母的缩写(如CST或PST),因为它们是ambiguous and not standard.
您可以通过调用ZoneId.getAvailableZoneIds()获取可用时区列表(并选择最适合您系统的时区).
java西语_使用Java 8 DateTimeFormatter和西班牙语月份名称进行解析相关推荐
- c语言和java哪个好学_学java前要学C语言吗?java和C语言哪个好学?
在编程世界,只要一提到java,总会有人联想到C语言,仿佛这两者之间有着一种密不可分的联系,那么也会有外行人在选择学习编程时,会有类似于学java前是否需要学习C语言呢?或者说java和C语言哪个会比 ...
- java 删除语句_是java语句
<21天学通Java(第7版)>-- 第2章 Java编程基础 2.1 语句和表达式 本节书摘来异步社区<21天学通Java(第7版)>一书中的第2章,第2.1节,作者: [美 ...
- java 字符串包_包java字符串
Java核心技术卷I基础知识3.6.3 不可变字符串 3.6.3 不可变字符串 String类没有提供用于修改字符串的方法.如果希望将greeting的内容修改为"Help!",不 ...
- bigint对应java什么类型_「JAVA」从格式化输出到扫描输入,深究Java正则表达式匹配之道
字符串是不可变的 字符串是不可变的,也就是说当字符串的内容发生改变的时候,会创建一个新的String对象:但是如果内容没有发生改变的时候,String类的方法会返回原字符串对象的引用. 而正则表达式往 ...
- java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)
import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...
- java动态类加载_实现Java动态类载入机制
作 为 充 分 利 用Java 的 动 态 类 载 入 机 制 的 最 好 例 子, 带 有Java 扩 展 的Web 浏 览 器 根 据 请 求 从 网 络 或 本 地 文 件 系 统 中 动 态 ...
- java核心教程_核心Java教程
java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...
- java 包命名_【Java】包的命名规则
命名规范 包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo 常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG 类:所有单词的首字母大写,如 TestJava p ...
- java 图片效果_使用Java进行图片底片化效果处理
使用java代码读取图片,并进行底片化处理 util importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Arr ...
最新文章
- 设置SharePoint部门站点各个文件夹的权限
- 开启iOS自动化测试之门
- boost::serialization模块指针反序列化的安全异常处理示例
- 音乐、视频播放模式切换实现方案及原理解析(基于vue、vuex、h5 audio)
- Matlab各种最值问题
- Vue框架之条件与循环的使用
- 保险营销观察报告:保险直播“带货”的现状、风险分析与未来研判
- 智能门禁(3)---汉王智能人脸门禁系统
- exchange实现外部邮件收发的两种方法
- PLC状态机编程第六篇-优化PLC程序生成
- 【Qt学习笔记】4.事件处理
- Linux c学习--进程基础学习
- Learning to Track at 100 FPS with Deep Regression Networks 论文笔记
- Java修改Windows注册表
- 怎么使用山东鼎信发送短信验证码
- 驼色的羊绒大衣怎么搭配好看
- HDU4417_树状数组加离线
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- 移动通信电磁辐射(转)
- 51nod 2075 图书管理员
热门文章
- 彼岸花开开彼岸,奈何桥前怎奈何
- UE4移动平台AR开发快速预览
- Python的数据科学函数包(二)——pandas(series dataframe)(loc iloc ix)(csv文件)
- 百度新闻推荐真的在推荐新闻吗
- JES-java emil server搭建
- halcon初识region
- 小猫爪:汽车电子小知识01- ISO15765(UDS on CAN)详解
- zData与持续优化 云和恩墨以创新获天安人寿供应商突出贡献奖
- PAT-1014 福尔摩斯的约会
- 【JZOJ 100029】【NOIP2017提高A组模拟7.8】陪审团 (贪心+排序)