有没有办法在Java中使用Date,格式为YYYYWW?有一周的一周,但有什么方法可以找到一年中的一周?
答案 0 :(得分:4)
我对你的问题不太确定,但也许你想要一个类似ISO的工作日,包括年份和周年。如果是这样,那么请注意这样一个事实,即一年的另一个定义,即一周的一年(或其他称为周基年)。今年在大多数情况下与标准日历年相同,但在日历年的开始或结束时可能会有所不同,具体取决于ISO周规则(星期一作为第一周的第一天和至少有一年的第一周)日历年的4天)。
如果您查找本周的年份和ISO周的年份,那么您应该使用以下表达式:
// In France ISO-8601-week-rules are valid, so let's use this locale to choose ISO.
SimpleDateFormat sdf = new SimpleDateFormat("YYYYww", Locale.FRANCE); // big letter Y!
否则你当然可以选择@BetaRide的另一个答案:“yyyyww”。
答案 1 :(得分:2)
您可以使用SimpleDateFormat
格式化和解析任何日期字符串。
您要查找的格式为"yyyyww"
。
答案 2 :(得分:2)
ISO 8601标准定义了这样的一周。您可能需要查看维基百科文章here和here以获取指导,因为您的格式不是很标准且含糊不清。该标准使用W
和可选的连字符,例如YYYY-Www
。
Joda-Time library对ISO 8601有很好的支持,包括数周。请参阅ISODateTimeFormat
课程及其weekYearWeek
方法。
请注意时区至关重要,以确定日期,从而确定一周。在巴黎周日结束的午夜时分意味着在法国新的一周,而在蒙特利尔仍然是“上周”。
使用Joda-Time 2.5的示例代码。
DateTime now = DateTime.now( DateTimeZone.forID( "America/Montreal" ) );
String output = ISODateTimeFormat.weekyearWeek().print( now );
int weekNumber = now.getWeekOfWeekyear();
跑步时。
now: 2014-11-03T02:30:10.124-05:00
output: 2014-W45
与Java捆绑在一起的java.util.Date和.Calendar以及SimpleDateFormat类非常麻烦。避免他们。在Java 8中使用Joda-Time或新的java.time package(受Joda-Time启发)。
答案 3 :(得分:1)
致y represent Year
小心 - w represents Week in year
和W represents Week in month
尝试
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyww");
System.out.println(dateFormat.format(new Date()));
请参阅this了解更多日期格式
答案 4 :(得分:0)
是的,我们可以在一个月中使用Y,在一年中使用y。
例如:Date d =new Date();
SimpleDateFormat ft =
new SimpleDateFormat ("yyyyww");
System.out.println(ft.format(d));
可以给你当前的一年和一周。