`
fantaxy025025
  • 浏览: 1311846 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Java_Date讲解和工具类库

阅读更多

目前要给公司出一些数据,美其名曰:报表。 一个以 用数据来说话 为理念的公司,这个东西会遍地可见。

 

其中一大重点就是计算时间,比如典型的有,同期数据,包括去年的同一天,去年的同一周,去年的同一个月,上一周,上两周,上个月的上两周,等等。

如果用Java自带的Canlendar,估计大家都得吐血,难看难懂。

 

所以使用了joda 这个工具,居然公司的平台系统框架中早编译过此包。推荐!

学习joda的地方就是搜博客和看joda官方的文档了,其中推荐一个链接 ,感谢作者无私奉献!

 

--------

另外记录一些碰到的细节。

 

去年的同一周

细节:

#1 一年有365/366天,即52周多1天或2天,这个是固定的;但见#3讨论。

#2 那么多出来的一两天,怎么处理呢:算入下年的第一周里。

    比如我费劲儿找到的2001-12-31就是一年最后一天,而且恰是周一,本来是第53周,但纪年法把他算作下年的第一周里,即2001 -12-31是2002 年的第 1 周的周一。

#3 递减52周,并不准确。

    比如2010-11-14为2010年的第45周,递减52周后,却为2009年的46周。郁闷吧。

    原因:每年都会“结余”1到2天,而且这些天肯定在一个周内;年数多了,必然结余的天数比较多;以52周往回作减法的前提假设是:1年就等于52周,显然不对;

    另外:你怀疑这些“结余”出来的天组成的周,会放入哪个年份呢?1年固定52周吗?!

 

看下面程序找出来的结果,日期为每年的最后一天即xxxx-12-31:

===============================
2000-12-31 是2000年的周次, 52
2001-12-31 是2002年的周次, 1
2002-12-31 是2003年的周次, 1
2003-12-31 是2004年的周次, 1
2004-12-31 是2004年的周次, 53
2005-12-31 是2005年的周次, 52
2006-12-31 是2006年的周次, 52
2007-12-31 是2008年的周次, 1
2008-12-31 是2009年的周次, 1
2009-12-31 是2009年的周次, 53

根据统计这个结果+每年仅仅“结余”1到2天,我推论:

#1 没有相邻的两年都为53周;

#2 每5年左右出现一次53周的年份;

    即今年2009年是53周,那么下次是53周的年份大约为2009+5=2014年左右(2004、2005、2006)都可能。

    原因:365%7=1; 366%7=2; 366天的年份基本为4的倍数;

    所以:5到6年大约为5个1 + 1个2

我统计了1900年至今的年份,基本正确。

 

计算方法1 :这种方法周数能对应准确,但处理53周的年份需要特殊对待。

#1 计算出当期比如2010-11-14是本年第几周,是算作所在周-年的第几周。

#2 去年同期就是 往前算一年(#1中的年份减去1);找这个年的同一周;

#3 如果有53,而上年没有的话,之后用最后一周即52周了;

具体用joda实现的代码就不贴了~

 

计算方法2

#1 用上一年的同一天 所在的周

    这种方法比较简单,但是闰年时,2月份的日期需要处理一下; 周数也对不上;

 

计算方法 3

#1 递减52周

    此方法周数对不上,上面已经说过了。

 

 

待有心得,继续补充。

 

 

分享到:
评论

相关推荐

    java李兴华学习笔记之Java常用类库

    ### Java李兴华学习笔记之Java常用类库 #### 一、课程介绍及知识点概览 根据提供的资料,“Java李兴华学习笔记之Java常用类库”这份文档来源于北京MLDN软件实训中心的教学资料,主要涵盖了Java编程语言中常用类库...

    Java的实用工具类库util包详细讲解

    Java.util 包是 Java 语言中一个非常实用的工具类库,提供了一些实用的方法和数据结构。下面我们将详细讲解 Java.util 包中的重要类和方法。 1. 日期类 Date 日期类 Date 是 Java.util 包中一个非常重要的类,封装...

    java常用类库

    java常用类库 主要方法分析 pdf 文件 实例讲解 StringBuffer类 Runtime类 Locable类 ResourceBundle类 System类 Date类 Calendar类 DateFormat类 Math类

    JAVA2 SDK 类库详解

    2. **java.util**:提供了数据结构(如ArrayList、LinkedList、HashSet和HashMap)和实用工具类(如Date、Calendar和Random)。集合框架是这个包的核心,它定义了接口(如List、Set和Map)和实现这些接口的类。 3. ...

    学习java开发应该了解的几个常用的基本核心类库

    以下将详细讲解几个在Java开发中不可或缺的基础核心类库。 1. **Java.lang**: 这是Java中最基础的包,它包含了一些最核心的类,比如`String`、`Integer`、`System`、`Math`等。`String`类用于处理文本字符串,`...

    Java_base.rar_java ppt_java基础 ppt

    9. **Java API和标准库**:介绍常用的Java类库,如Math类、Date类、File类等。 接下来,我们关注两个源代码文件`HelloWorld.java`和`NullPoint.java`。通常,`HelloWorld.java`是一个新手入门的示例,展示如何编写...

    JAVA常用类库课件

    这个压缩包很可能是包含了关于这些类库的讲解、示例代码和练习,帮助新手快速理解和应用Java的核心功能。 1. **Java 核心类库**:Java的核心类库,也称为Java标准版(Java SE)类库,是所有Java程序的基础。它包括`...

    The_Java_Developers_Almanac_1.4.rar_The Almanac

    9. **Java标准库API**:介绍Java SE API的常用类库,如Math、Date/Time、XML解析、反射、注解等。 10. **实战案例**:提供各种实际应用场景下的代码示例,如Web开发、数据库操作、图形用户界面(GUI)编程等,帮助...

    Java编程风格及基础类库使用培训

    在培训中,还会详细讲解如何使用`java.time`包进行日期和时间操作,这是Java 8引入的新特性,比旧的`java.util.Date`和`java.util.Calendar`更易用、更强大。此外,异常处理(try-catch-finally)、多线程(Thread和...

    Java_记录我的研究的代表可能是从0到01.zip

    7. **Java标准库API**:可能会详细介绍Java标准库中的各种类和方法,如Math类、Date和Calendar类、StringBuilder类等。 8. **JDBC数据库操作**:如果涉及到数据库,会介绍如何使用Java进行数据库连接、查询、插入、...

    java知识重点讲解并有例题

    日期时间处理在Java中由java.util.Date和java.time包提供。java.util.Calendar是一个抽象类,代表时间和日期,而java.time包(自Java 8引入)提供了更强大且易于使用的API,如LocalDate、LocalTime、LocalDateTime等...

    Java开发详解.zip

    031105_【第11章:Java常用类库】_日期操作类(Date、Calendar)笔记.pdf 031106_【第11章:Java常用类库】_日期操作类(DateFormat、SimpleDateFormat)笔记.pdf 031107_〖第11章:Java常用类库〗_实例操作:取得...

    孙卫琴java面向对象PPT

    学习Java就是学习其强大的类库API,这部分可能涵盖常用类的使用,如Date、Calendar、Math等,以及集合框架的深入应用。 8. **异常处理(java_base3_exception.ppt)** 异常处理是Java编程中的重要一环,学习者...

    java教学ppt--第2-2章_Java_语言基础

    Java 语言基础是编程学习的重要部分,本章节主要讲解了Java中的数组这一核心概念。数组是一种复合数据类型,由相同类型的元素组成,并按照特定顺序排列。以下是对各个知识点的详细阐述: 1. **认识Java语言**:Java...

    IBM-ETP-java培训11.Java 常用类讲解2.ppt

    IBM-ETP(IBM Education Training Program)提供的"Java 常用类讲解2"培训课程,显然是为了帮助开发者深入理解Java的核心类库,提高编程效率。在这个部分,我们将详细探讨Java中的常用类,以及它们在实际开发中的...

    讲解Java中的基础类库和语言包的使用

    总的来说,Java的基础类库和语言包是Java编程的强大支撑,它们为开发者提供了丰富的工具,涵盖了程序开发的各个方面。掌握这些类库的使用,是成为合格Java程序员的基础。通过不断学习和实践,开发者可以利用这些工具...

    java基础类库

    本课程详细讲解了java的一些类库的使用,其中包含如下: ? ? ? ?使用java类库方法进行与用户的互动。 使用 String、StringBuffer和StringBuilder来处理字符串,ate和Calendar来处理日期、时间,其中Date是一个已经...

    Java类库常用类归纳.pdf

    本文将对Java类库中的一些常用类进行归纳和详细讲解。 首先,我们来看`Java.lang`包下的`Enum`。枚举在Java中是一种特殊的类,用于定义一组固定的常量。枚举的定义语法如下: ```java [Modifier] enum enumName{ ...

    课程讲解Java基础课件2016版

    10. **Java API与标准库**:课程会介绍Java标准库中的常用类和接口,如Date、Calendar、Math等,以及如何使用Java API文档来查找和学习更多的类库。 11. **文件与目录操作**:通过File类和FileInputStream/...

Global site tag (gtag.js) - Google Analytics