GWT日期相当于java.util.Calendar。

6

我想获取特定星期的日期,例如星期三。即如果今天是27日星期五,则实际上星期三应该是25日。

我可以通过以下方式实现:

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
String thisWed = String.format("%tF%n", calendar)

这里的挑战在于 GWT 客户端不支持 java.util.Calendar,是否有可能在不将此代码移至服务器端的情况下找到解决方案?
谢谢。

重复之前的问题 https://dev59.com/Rmw05IYBdhLWcg3w0VGa - cellepo
4个回答

16

2

最简单的方法可能是使用Joda-Time或类似的库,但所有GWT端口的JodaTime都已被放弃:GWT的日期时间库

最高效的方法(没有第三方依赖)是自己进行计算:

Date d = new Date();
int dow = d.getDay();
int wed_delta = 3 - dow;
wed = new Date(d.getTime() + (86400 * wed_delta));

(最后一行可以替换为 CalendarUtil.addDaysToDate(d, wed_delta),直接修改 d)


嗨Thomas,初看你的逻辑,看起来没问题,但是当我运行它时,我得到了Fri Apr 27 18:25:48 CAT 2012。使用我上面的代码,我会得到Last Wednessday: 2012-04-25。我期望得到new Date()那周的最后一个星期三。 - Babajide Prince

1

使用 DateTimeFormat,可以将 java.util.Date 格式化为字符串或将字符串格式化为 Date。

Date date = new Date();
DateTimeFormat format = DateTimeFormat.getFormat("EEEE");
String day = format.parse(date);

2
谢谢,但这并没有回答我的问题。 - Babajide Prince

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接