最近项目中遇到了多语言适配日期的问题,在这里记录一下
首先,问题是要讲一个时间戳转换为25/Feb/2020和02/20这种格式
开始想着使用SimpleDateFormat来格式化,可是不理想,没法实现英文月份和短年份(可能是我使用的姿势不对),没办法只能使用农村包围城市的办法,分别拿到年月日的字符串再拼接出来。
本来开始使用的Date.getYear()类似的方法但是提示过时了,后来转为使用Calendar
这里我使用Calendar和String.format()这两个方法结合:
//获取Calendar对象
Calendar instance = Calendar.getInstance(Locale.US);
long time = System.currentTimeMillis();
//将时间戳传给Calendar
instance.setTimeInMillis(time);
//获取年份
System.out.println(instance.get(Calendar.YEAR));//2020
//获取日期
System.out.println(instance.get(Calendar.DAY_OF_MONTH));//25
//获取月份
System.out.println(instance.get(Calendar.MONTH));//2
获取到了年月日的字符串,就可以随意拼接啦,也不会提示方法过期,美滋滋。
可是问题又来了,无法将月份变成英文版,也无法获取到短年份字符串,当当当当,所以又使用String.format()函数。
说明try {
Date date = sdf.parse("2020-02-25");
System.out.println("日期-"+String.format(Locale.US,"%td",date));//25
System.out.println("月份-"+String.format(Locale.US,"%tb",date));//Feb
System.out.println("年份-"+String.format(Locale.US,"%ty",date));//20年
System.out.println("年份-"+String.format(Locale.US,"%tY",date));//2020年 System.out.println(String.format(Locale.US,"%tD%n",date));//02/25/20
System.out.println(String.format(Locale.US,"%tF%n",date));//2020-02-25
} catch (ParseException e) {
e.printStackTrace();
}
这样就得到了我们想要的字符串了,可以随意拼接啦。
over.
网友评论