javacalendar求java中Calendar类的用法例子(并附每条注释)
javacalendar 时间:2021-06-26 阅读:(
)
做一个JAVA日历
你使用java.util.Calendar吧,可以加减年、月、天等操作,你要连续的几个月,那只要连续加一个月,得到一个新的date。
然后用你写好的输出数组的方法运算就可以了。
这只是思路,还是需要你调整一下的。
关于java.util.Calendar的一点儿疑惑,请高手作答。
Calendar.THURSDAY
Calendar.DAY_OF_MONTH
Calendar.JUNE
这三个确实都是5,调用返回的结果也肯定跟直接调用cal.get(5)一样,这是因为:
public int get(int field)
返回给定日历字段的值。
field - 给定的日历字段。
Calendar.THURSDAY和Calendar.JUNE这两个根本不是字段,是字段的值,换句话说,
Calendar.THURSDAY的说明是指示 Thursday 的 DAY_OF_WEEK
字段值。
也就是你调用cal.get(Calendar.DAY_OF_WEEK)可能会返回这个值。
总之,调用cal.get(Calendar.THURSDAY)和cal.get(Calendar.JUNE)是没有意义的,返回的都是cal.get(Calendar.DAY_OF_MONTH)
可以把Calendar看做是一个日期,你只会说我想获得这个日期是哪年、哪月、哪日、周几等。
比如你问Calendar是周几,它会回答你一个数值,而java是这么设计的,从1-7代表周日到周一,因为这个方法返回的是int类型。
而5代表周四,所以就定义了一个常量THURSDAY=5.
实际你传入Calendar.THURSDAY从某种意义上讲是不合法的,只不过他的值恰巧与Calendar.DAY_OF_WEEK相同而已。
java calendar 时间
1、计算某一月份的最大天数
Calendar?time=Calendar.getInstance();?
time.clear();?
time.set(Calendar.YEAR,year);?
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0????????????
intday=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间。
2、Calendar和Date的转化
(1) Calendar转化为Date
Calendar?cal=Calendar.getInstance();
Date?date=cal.getTime();(2) Date转化为Calendar
Date?date=new?Date();
Calendar?cal=Calendar.getInstance();
cal.setTime(date);3、格式化输出日期时间
Date?date=new?Date();
SimpleDateFormat?df=new?SimpleDateFormat("yyyy-MM-dd?hh:mm:ss");
System.out.println(df.format(date));4、计算一年中的第几星期
(1)计算某一天是一年中的第几星期
Calendar?cal=Calendar.getInstance();
cal.set(Calendar.YEAR,?2006);
cal.set(Calendar.MONTH,?8);
cal.set(Calendar.DAY_OF_MONTH,?3);
int?weekno=cal.get(Calendar.WEEK_OF_YEAR);(2)计算一年中的第几星期是几号
SimpleDateFormat?df=new?SimpleDateFormat("yyyy-MM-dd");
Calendar?cal=Calendar.getInstance();
cal.set(Calendar.YEAR,?2006);
cal.set(Calendar.WEEK_OF_YEAR,?1);
cal.set(Calendar.DAY_OF_WEEK,?Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));求java中Calendar类的用法例子(并附每条注释)
Calendar类(理解)
Calendar类是采用手工的方式取得日期,可以通过此类精确到毫秒,此类的定义如下:
public abstract class Calendar extends Object
implements Serializable, Cloneable, Comparable
这个类本身是一个抽象类,抽象类要想实例化肯定使用子类:GregorianCalendar
.lxh.api.datedemo;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalendarDemo {
public static void main(String[] args) {
Calendar calendar = new GregorianCalendar();
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + (calendar.get(Calendar.MONTH) + 1));
System.out.println("DATE: " + calendar.get(Calendar.DATE));
System.out
.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out
.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
}
}
但是现在有一个问题,如果每次取时间都按照这种方式取的话,那么得累死,那么能不能设计一个类,可以通过此
类直接取得时间呢,例如:现在给出了如下的一个接口:
.lxh.api.datedemo;
public interface DateTime {
/**
*取得日期
* @return 日期的字符串,例如:2009-12-22
*/
public String getDate() ;
/**
*取得日期时间
* @return 日期时间的字符串,例如:2009-12-22 11:06:23.345
*/
public String getDateTime() ;
/**
*取得时间戳
* @return 返回时间戳的字符串,例如:20091222110623345
*/
public String getTimeStamp() ;
}
前面需要补0的问题需要注意,例如:01。
.lxh.api.datedemo;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class DateTimeImpl implements DateTime {
private Calendar calendar;
public DateTimeImpl() {
this.calendar = new GregorianCalendar();
}
public String getDate() {
StringBuffer buf = new StringBuffer();
buf.append(calendar.get(Calendar.YEAR)).append("-");
buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2)).append("-");
buf.append(this.addZero(calendar.get(Calendar.DATE), 2));
return buf.toString();
}
public String getDateTime() {
StringBuffer buf = new StringBuffer();
buf.append(calendar.get(Calendar.YEAR)).append("-");
buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2)).append("-");
buf.append(this.addZero(calendar.get(Calendar.DATE), 2)).append(" ");
buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2)).append(":") ;
buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)).append(":") ;
buf.append(this.addZero(calendar.get(Calendar.SECOND), 2)).append(".") ;
buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3)) ;
return buf.toString();
}
@Override
public String getTimeStamp() {
StringBuffer buf = new StringBuffer();
buf.append(calendar.get(Calendar.YEAR));
buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2));
buf.append(this.addZero(calendar.get(Calendar.DATE), 2));
buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2));
buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)) ;
buf.append(this.addZero(calendar.get(Calendar.SECOND), 2)) ;
buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3)) ;
return buf.toString();
}
private String addZero(int num, int len) {
StringBuffer buf = new StringBuffer();
buf.append(num);
while (buf.length() < len) {
buf.insert(0, 0);
}
return buf.toString();
}
}
ucloud6.18推出全球大促活动,针对新老用户(个人/企业)提供云服务器促销产品,其中最低配快杰云服务器月付5元起,中国香港快杰型云服务器月付13元起,最高可购3年,有AMD/Intel系列。当然这都是针对新用户的优惠。注意,UCloud全球有31个数据中心,29条专线,覆盖五大洲,基本上你想要的都能找到。注意:以上ucloud 618优惠都是新用户专享,老用户就随便看看!点击进入:uclou...
简介酷盾安全怎么样?酷盾安全,隶属于云南酷番云计算有限公司,主要提供高防CDN服务,高防服务器等,分为中国境内CDN,和境外CDN和二个产品,均支持SSL。目前CDN处于内测阶段,目前是免费的,套餐包0.01一个。3G流量(高防CDN)用完了继续续费或者购买升级包即可。有兴趣的可以看看,需要实名的。官方网站: :点击进入官网云南酷番云计算有限公司优惠方案流量3G,用完了不够再次购买或者升级套餐流量...
传统农历新年将至,国人主机商DogYun(狗云)发来了虎年春节优惠活动,1月31日-2月6日活动期间使用优惠码新开动态云7折,经典云8折,新开独立服务器可立减100元/月;使用优惠码新开香港独立服务器优惠100元,并次月免费;活动期间单笔充值每满100元赠送10元,还可以参与幸运大转盘每日抽取5折码,流量,余额等奖品;商家限量推出一款年付特价套餐,共100台,每个用户限1台,香港VPS年付199元...
javacalendar为你推荐
dnf装备代码DNF代码,装备,不是EXwindowsmediaWindows Media Player什么意思snake模型什么是S-L头模型?爱短信官网官方飞信,ET飞信,爱短信飞信插件哪个好用??网络视频下载器万能网络视频下载器 1.34怎么用renderpartialreact里面使隐藏的组件显示出来是addclass还是renderflash实例Flash元件和实例的概念及关系?pat是什么格式如何把JPG图片变为PAT格式图片?broadcast播播……拼音音乐代码网页中怎么写自动播放mp3音乐的代码
日本vps 北京vps主机 火山主机 wordpress主机 cdn服务器 香港托管 php主机 lighttpd css样式大全 国外空间 dux 免费mysql 外贸空间 阿里云免费邮箱 qq金券 申请免费空间 江苏徐州移动 腾讯网盘 国外代理服务器 石家庄服务器 更多