代码之家  ›  专栏  ›  技术社区  ›  stolsvik

乔达时间:一周的第一天?

  •  56
  • stolsvik  · 技术社区  · 16 年前

    你如何得到一周的第一天给 Locale 使用 Joda-Time 是吗?

    要点:大多数国家使用国际标准星期一作为一周的第一天!!)其他人使用星期天(特别是美国)。其他人显然是星期六。显然是星期三?你说什么?

    Wikipedia "Seven-day week"#Week_number

    6 回复  |  直到 7 年前
        1
  •  44
  •   Matt Ball    14 年前

    Joda Time使用ISO标准星期一到星期日。

    它不能获得一周的第一天,也不能基于标准星期一以外的任何一天返回星期几索引。最后,根据ISO规则计算周数。

        2
  •  14
  •   itsadok    13 年前

    你没有理由至少不能利用JDK来为给定的地区找到“一周的惯例开始”。唯一棘手的部分是转换工作日的常量,两者都是1到7,但是java.util.calendar被移动了一个,calendar.monday=2 vs.datetimeconstants.monday=1。

    无论如何,使用此函数:

    /**
     * Gets the first day of the week, in the default locale.
     *
     * @return a value in the range of {@link DateTimeConstants#MONDAY} to
     *         {@link DateTimeConstants#SUNDAY}.
     */
    private static final int getFirstDayOfWeek() {
      return ((Calendar.getInstance().getFirstDayOfWeek() + 5) % 7) + 1;
    }
    

    将区域设置添加到calendar.getInstance()以获取默认区域设置以外的某个区域设置的结果。

        3
  •  5
  •   Cory Klein    11 年前

    以下是如何在Joda Time周围工作以获得美国一周的第一天:

    DateTime getFirstDayOfWeek(DateTime other) {
      if(other.dayOfWeek.get == 7)
        return other;
      else
        return other.minusWeeks(1).withDayOfWeek(7);
    }
    

    或在斯卡拉

    def getFirstDayOfWeek(other: DateTime) = other.dayOfWeek.get match {
        case 7 => other
        case _ => other.minusWeeks(1).withDayOfWeek(7)
    }
    
        4
  •  2
  •   crowne    16 年前

    看起来你运气不好,看起来所有提供的时间都继承了BaseChronology的实现,它只支持ISO定义, 即星期一=1…星期日= 7。

    您必须定义自己的本地环境,可能以严格的时间或LenientChronology为模型,添加工厂方法:

    public static LocaleChronology getInstance(Chronology base, Locale locale)
    

    并重写

    public final DateTimeField dayOfWeek()
    

    使用Java.UTL.Nalual.StJealNoSQL数据(LaulaDeiRealLayle)的重新实现,它依赖于Sun。UTI.Realth.LoalAldATa.GETMyalAdDATA(DestiRealAdLayle)。

        5
  •  -1
  •   Tim Büthe    16 年前

    所以您的问题是,如何从joda datetime对象中获取dayofweek?这个怎么样:

    DateTime dt = new DateTime().withYear(2009).plusDays(111);
    dt.toGregorianCalendar().getFirstDayOfWeek();
    
        6
  •  -1
  •   y2k-shubham    7 年前

    我用了下面的 树桩 在里面 Scala 从中获取一周的第一天和最后一天 Joda DateTime

    val today: DateTime = new DateTime()
    val dayOfWeek: DateTime.Property = today.dayOfWeek()
    
    val firstDayOfWeek: DateTime = dayOfWeek.withMinimumValue().minusDays(1)
    val lastDayOfWeek: DateTime = dayOfWeek.withMaximumValue().minusDays(1)
    

    注释 : minusDays(1) 只是为了让 星期日至星期六 (而不是默认的周一到周日 乔达 )对于我们(以及其他类似的公司) 场所 ,可以忽略此部分