java中是否有YYYYWW格式

时间:2014-07-02 09:33:33

标签: java date

有没有办法在Java中使用Date,格式为YYYYWW?有一周的一周,但有什么方法可以找到一年中的一周?

5 个答案:

答案 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标准定义了这样的一周。您可能需要查看维基百科文章herehere以获取指导,因为您的格式不是很标准且含糊不清。该标准使用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

避免使用j.u.Date

与Java捆绑在一起的java.util.Date和.Calendar以及SimpleDateFormat类非常麻烦。避免他们。在Java 8中使用Joda-Time或新的java.time package(受Joda-Time启发)。

答案 3 :(得分:1)

y represent Year小心 - w represents Week in yearW 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));

可以给你当前的一年和一周。