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();
}
}
香港最便宜的vps要多少钱?最便宜的香港vps能用吗?香港vps无需备案,整体性能好,而且租用价格便宜,使用灵活,因为备受站长喜爱。无论是个人还是企业建站,都比较倾向于选择香港VPS。最便宜的香港vps能用吗?正因为有着诸多租用优势,香港VPS在业内颇受欢迎,租用需求量也在日益攀升。那么,对于新手用户来说,香港最便宜的vps租用有四大要点是务必要注意的,还有易探云香港vps租用最便宜的月付仅18元...
青果网络QG.NET定位为高效多云管理服务商,已拥有工信部颁发的全网云计算/CDN/IDC/ISP/IP-VPN等多项资质,是CNNIC/APNIC联盟的成员之一,2019年荣获国家高薪技术企业、福建省省级高新技术企业双项荣誉。那么青果网络作为国内主流的IDC厂商之一,那么其旗下美国洛杉矶CN2 GIA线路云服务器到底怎么样?官方网站:https://www.qg.net/CPU内存系统盘流量宽带...
青果网络怎么样?青果网络隶属于泉州市青果网络科技有限公司,青果网络商家成立于2015年4月1日,拥有工信部颁发的全网IDC/ISP/IP-VPN资质,是国内为数不多具有IDC/ISP双资质的综合型云计算服务商。青果网络是APNIC和CNNIC地址分配联盟成员,泉州市互联网协会会员单位,信誉非常有保障。目前,青果网络商家正式开启了618云特惠活动,针对国内外机房都有相应的优惠。点击进入:青果网络官方...
javacalendar为你推荐
youtube创始人世界第一大网站是什么?各大网站有没有很好玩的网站啊公众号付费阅读为什么微信公众号阅读要收费?shoujiao手机板aoblox怎么从英文变成中文qq管家官网腾讯手机管家官网防盗页面地址是什么?知识百科淘码除了爱码,现在哪个验证码平台还能用pass是什么在英语里pass是什么意思ps5教程photoshop cs 教程 最好有视频的情人节网页想给我女朋友做一个情人节快乐的简易网站,域名和虚拟主机都买好了,就是不会html,有没有人能给我个参考模板?listview的优化怎么准备Android面试
me域名 网通服务器租用 合租服务器 什么是域名解析 域名解析文件 什么是二级域名 申请免费域名 vir t牌 美国仿牌空间 ixwebhosting 美国php主机 京东云擎 parseerror 远程登陆工具 服务器架设 java空间 促正网秒杀 天互数据 东莞数据中心 更多