有没有一种方法可以用Java / Kotlin中的区域设置正确的格式格式化日和月(以紧凑格式)而不格式化年份?因此,对于英语,应为“ 9月20日”,而对于瑞典语为“ 9月20日”。
为了进行比较,在Cocoa平台上,我可以执行以下操作(在Swift中):
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "sv_SE")
formatter.setLocalizedDateFormatFromTemplate("MMM d")
print(formatter.string(from: Date()))
这将正确地扭转局面。 Java SDK是否有等效的功能?我一直在尝试使用DateTimeFormatter
和较早的SimpleTimeFormat
API进行各种形式的操作,但是都没有成功。
注意:与this question不同,我不希望包含年份的完整介质格式。我也不想要DateTimeFormatter.ofPattern("MMM d")
,因为这会在瑞典语中给出错误的结果,或者DateTimeFormatter.ofPattern("d MMM")
,因为那会在英语中给出错误的结果。
java大神给出的解决方案
不,对不起我知道没有Java库会自动将"MMM d"
转换为20 sep.
的语言环境,而该语言环境偏爱月份缩写的月份。
您可以尝试通过以下方式修改answer by Rowi:
DateTimeFormatter ft =
DateTimeFormatter
.ofLocalizedDate(FormatStyle.MEDIUM)
.withLocale(Locale.forLanguageTag("sv-SE"))
;
但是结果是:
9月20日2019年
它包括您不要求的年份。
高级解决方案将使用DateTimeFormatterBuilder
类构建DateTimeFormatter
对象。
DateTimeFormatterBuilder
.getLocalizedDateTimePattern(
FormatStyle.MEDIUM,
null,
IsoChronology.INSTANCE,
Locale.forLanguageTag("sv-SE")
)
这将返回d MMM y
。修改此字符串以删除y
及其前面的空格。请注意,在其他语言中,y
可能是yy
,yyyy
或u
,并且可能不在字符串的最后。将修改后的格式模式字符串传递给DateTimeFormatter.ofPattern
。
可能有些不稳定。即使您浏览了所有可用语言环境的格式模式字符串,下一个版本的CLDR(字符串来自何处)也可能会令人吃惊。但我认为这是我们能做的最好的事情。如果是我,我会考虑引发异常,以防万一我发现来自getLocalizedDateTimePattern
的字符串看起来不像我知道的修改方式。
private中的Java提供类级别的封装。可以封装一个对象吗?还是这样做徒劳?例如,如果我们将一个类定义为 public class Person { private String ssn; private ArrayList<Person> friends = new ArrayList<Person>(); public voi…
DataSourceTransactionManager和JndiObjectFactoryBean和JdbcTemplate的用途是什么? - java以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean <tx:annotatio…
Tomcat找不到直接放置在classes文件夹下的类 - java我有以下JSP:<%@ page import="foo.*" %> <html> <body> The page count is: <%=Counter.getCount()%> </body> </html> 我在包Counter中有一个foo类,该类存储在: …
Java日期格式解析 - java我正在尝试通过JSON响应更改日期格式,但我一直在获取java.text.ParseException。这是来自服务器2015-02-03T08:37:38.000Z的日期,我希望它显示为2015/02/03这是yyyy-MM-dd。而我做到了。DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd…
快速解析来自http://bit.ly链接的方法 - java给定来自流的一系列URL,其中可能有数百万个bit.ly,google或tinyurl缩短了链接,那么解析这些URL以获得最终URL的最可扩展的方法是什么?一个多线程爬虫在每个短链接上执行HEAD请求,同时缓存已经解决的请求?是否已经有提供此服务的服务?还要考虑到不会被url缩短服务阻止。假设规模是每天缩短2000万个网址。 java大神给出的解决方案 Go…