有关SimpleDateFormat日期格式的问题

前几天遇到一个日期格式的小坑,记录分享一下

程序需要判断当天是星期几,好执行某些操作,于是用到了下面的方法

SimpleDateFormat sdf = new SimpleDateFormat("EEE");
String week = sdf.format(new Date());
if ("星期五".equals(week)) {
    System.out.println(week);
    //操作
}

在自己电脑上正常运行,可是放服务器上就不行了,一直不进判断语句,整了大半天,没找到原因就换成下面的写法

Calendar c = Calendar.getInstance();
c.setTime(new Date());
int week = c.get(Calendar.DAY_OF_WEEK) - 1;
//week不减一,星期天~星期六对应1~7
//星期一~星期六对应1~6,星期天对应0
if (week == 5) {
    System.out.println(week);
    //操作
}

问题解决了,但是还是对SimpleDateFormat的格式产生了疑问,于是查了一下API

https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

原来是服务器语言环境的问题

SimpleDateFormat sdf = new SimpleDateFormat("EEE",Locale.CHINA);
String week = sdf.format(new Date());
if ("星期五".equals(week)) {
    System.out.println(week);
    //操作
}

OK,服务器上运行正常

SimpleDateFormat sdf0 = new SimpleDateFormat("EEE");
SimpleDateFormat sdf1 = new SimpleDateFormat("EEEE");
SimpleDateFormat sdf2 = new SimpleDateFormat("EEE",Locale.ENGLISH);
SimpleDateFormat sdf3 = new SimpleDateFormat("EEEE",Locale.ENGLISH);
Date date = new Date();
System.out.println("中文环境sdf0:"+sdf0.format(date));
System.out.println("中文环境sdf1:"+sdf1.format(date));
System.out.println("英文环境sdf2:"+sdf2.format(date));
System.out.println("英文环境sdf3:"+sdf3.format(date));

运行结果,三个E以上,英语就会显示星期的全称,以下就是缩写

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值