事实证明,一年中的一周使用ww
作为 2011 年 1 月 1 日的 Java 日期格式字符串,当语言环境为en_GB
。这是证明(使用 scala REPL,尽管我可以使用 Java 程序来完成此操作)
首先获取我的语言环境
scala> val en = java.util.Locale.getAvailableLocales.find(_.toString == "en") getOrElse error("no en")
en: java.util.Locale = en
scala> val en_GB = java.util.Locale.getAvailableLocales.find(_.toString == "en_GB") getOrElse error("no en_GB")
en_GB: java.util.Locale = en_GB
现在定为 1 月 1 日
scala> import java.util.Calendar; import Calendar._
import java.util.Calendar
import Calendar._
scala> Calendar.getInstance
res23: java.util.Calendar = java.util.GregorianCalendar[time=1300708839128,....]
scala> res23.set(MONTH, JANUARY); res23.set(DAY_OF_MONTH, 1)
scala> val firstJan = res23.getTime
firstJan: java.util.Date = Sat Jan 01 12:00:39 GMT 2011
现在声明一个方法来以区域设置相关的方式打印它:
scala> def weekInLocale(l : java.util.Locale) = { java.util.Locale.setDefault(l); new java.text.SimpleDateFormat("ww").format(firstJan) }
weekInLocale: (l: java.util.Locale)java.lang.String
现在调用它:
scala> weekInLocale(en)
res24: java.lang.String = 01
scala> weekInLocale(en_GB)
res26: java.lang.String = 52
这是正确的吗?
根据 ISO8601,第 1 周定义为包含 1 月 4 日的那一周。由于 2011 年 1 月 1 日是星期六,因此该日期属于前一周。
由于没有第 0 周,因此 2011-01-01 也可以拼写为 2010-W52-6。
另一方面,那些古怪的美国人则允许部分星期的时间。从维基百科 http://en.wikipedia.org/wiki/ISO_week_date:
美国系统距离周日还有几周时间
到周六,以及部分周
年初和年末。
因此,他们将其定义为第一周的最后一天。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)