java时间类泛解
来源:互联网 发布:淘宝的市场定位 编辑:程序博客网 时间:2024/06/05 18:43
时间作为任何一个系统的核心,自然在java最开始设计之初就被考虑到核心类的范畴。
于是在JDK 1.0版本中就诞生了一个Date类,Date类设计之初承载了两个功能:
第一,将时间与各种我们熟知的日期进行转换。Date类承载的时间是距离1970年1月1号00:00:00到当前的毫秒值,所以不方便我们查看,但是年,月,日,时,分,秒等日期就非常适合我们的认知。可以通过Date的一些方法获取当前的各类日期。
第二,解析Date和String。如果有一个字符串例如“2015-03-20”明显是表示一个时间,但是这个时间是不能用来计算的,为了计算,我们就需要把这个字符串转换为Date类型。而另外一些时候,为了展示的方便又需要把Date类型转换为字符串。
但是用着用着,人们发现Date类功能不够强大,很多地方有限制。但是因为Date类已经承载了这么多功能,所以扩展起来会越来越复杂也不符合oo,或者其他一些原因。于是人们就把Date类的功能分解到两个类Calendar类(承载了第一个功能)和DateFormat类(承载了第二个功能)。所以从jdk 1.1之后Date就很多方法都被标记为不建议使用,但是由于Date是核心类之一,而且很多一些系统或软件在设计和开发的时候都使用的Date,所以Date一直被保留而且还不断被使用。
下面展示一个打印日历的小demo
package com.amber.ivy;
import java.text.DateFormatSymbols;
import java.util.Calendar;
/**
* 打印输出一个日历
* @author ivyamber
*
*/
public class CalendarDemo
{
public CalendarDemo()
{
}
/**
* 打印给定日期所属月份的日历
* @param c 给定日期
*/
public void printCalendar(Calendar c)
{
DateFormatSymbols ds = new DateFormatSymbols();
String[] weekdays = ds.getShortWeekdays();//获取日历头部的星期
int today = c.get(Calendar.DAY_OF_MONTH);//记录当前日期
int month = c.get(Calendar.MONTH);//记录当前月份
//获取本月的第一天,并求出缩进
int indent = 0;//缩进量
c.set(Calendar.DAY_OF_MONTH, 1);
int firstDayOfWeek = c.getFirstDayOfWeek();
while(c.get(Calendar.DAY_OF_WEEK) != firstDayOfWeek)
{
indent++;
c.add(Calendar.DAY_OF_MONTH, -1);
}
//将日期设置为当月第一天,准备打印日历
c.add(Calendar.DAY_OF_MONTH, indent);
//打印日历头
for(String day:weekdays)
{
System.out.printf("%4s",day);
}
System.out.println();//换行
//打印缩进
for(int i=0;i<indent;i++)
{
System.out.print(" ");
}
//打印日期
while(c.get(Calendar.MONTH) == month)
{
if(c.get(Calendar.DAY_OF_WEEK) == c.getFirstDayOfWeek())
{
System.out.println();
}
System.out.printf("%4d",c.get(Calendar.DAY_OF_MONTH));
c.add(Calendar.DAY_OF_MONTH, 1);
}
}
public static void main(String[] args)
{
CalendarDemo cd = new CalendarDemo();
Calendar d = Calendar.getInstance();
cd.printCalendar(d);
}
}
打印2015年一月份日历效果
- java时间类泛解
- Java 时间
- java 时间
- java 时间
- JAVA时间
- Java 时间
- Java时间
- Java 时间
- java时间
- java--时间
- Java 时间
- java时间
- java时间
- java-----时间
- Java时间
- Java时间
- java时间
- Java时间
- NGUI
- 联合体
- 自己写的快速排序
- 数组与指针关系
- watchdog相关
- java时间类泛解
- 毕晓英3-20 第二章第十一题:9*9乘法表
- [LeetCode 165]Compare Version Numbers
- Putty工具包简单使用
- 指针
- CocosStudio v2.x版本教程——“回调特性”(C++语言版)
- # spring容器对数据源属性文件解释抛出的异常
- LeetCode --- 71. Simplify Path
- Java 实现对Discuz 论坛登录 ()