java笔记 -- GregorianCalendar和DateFormateSymbols 类方法
java.util.GregorianCalendar
- new GregorianCalendar()
构造一个日历对象, 用于表示默认地区,默认时区的当前时间.
- new GregorianCalendar(int year, int month, int day),
- new GregorianCalendar(int year, int month, int day, int hour, int minutes, int seconds)
year: 该日期所在的年份
month: 该日期所在的月份,以0位基准, 0表示1月.月份可以使用常量,例如:Calendar.DECEMBER
day: 该月份中的日期
hour: 小时(0到23之间)
minutes: 分钟(0到59之间)
seconds: 秒(0到59之间)
- int get(int field) 返回给定域的值
field参数:
Calendar.ERA, Calendar.YEAR, Calendar.MONTH, Calendar.WEEK_OF_YEAR, Calendar.WEEK_OF_MONTH,
Calendar.DAY_OF_YEAR, Calendar.DAY_OF_MONTH, Calendar.DAY_OF_WEEK, Calendar.DAY_OF_WEEK_IN_MONTH,
Calendar.AM_PM, Calendar.HOUR, Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND,
Calendar.MILLISECOND, Calendar.ZONE_OFFSET, Calendar.DST_OFFSET
- void set(int field, int value) 设置特定域的值
field参数: 参照get方法
value: 新值
- void set(int year, int month, int day),
- void set(int year, int month, int day, int hour, int minutes, int seconds)
将日期域与时间域设置为新值
- void add(int field, int amount) 对给定的时间域增加指定数量的时间.可以为负数.
field参数: 参照get方法
amount: 域被改变的数量
- int getFirstDayOfWeek
方法获取当前地区星期的起始日期(美国的星期第一天是Calendar.SUNDAY, 欧洲每个星期的第一天是星期一, 最后一天是星期日).
- void setTime(Date time)
将日历设置为指定时间点
- void getTime()
获得这个日历对象当前值所表达的时间点.
java.text.DateFormateSymbols
- String[] getShortWeekdays()
- String[] getShortMonths()
- String[] getWeekdays()
- String[] getMonths()
获取当前地区的星期几或月份的名称(数组).利用Calendar的星期和月份常量作为数组的索引值.
// CalendarTest .java
public class CalendarTest {
public static void main(String[] args) {
// 构造一个当前日期对象
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);
// System.out.println("today: " + today);
// System.out.println("month: " + month);
// 设置时间为本月开始日期
d.set(Calendar.DAY_OF_MONTH, 1);
// 本月第一天是星期几, 2018/09, 此weekday为7,周六
int weekday = d.get(Calendar.DAY_OF_WEEK);
// System.out.println("weekday: " + weekday);
// 得到当地星期的起始日
int firstDayOfWeek = d.getFirstDayOfWeek(); // 1是周日??
// System.out.println("firstDayOfWeek: " + firstDayOfWeek);
int indent = 0;
while (weekday != firstDayOfWeek) {
indent++;
// 将日期对象减1, 直到一个星期的第一天为止
d.add(Calendar.DAY_OF_MONTH, -1);
weekday = d.get(Calendar.DAY_OF_WEEK);
// System.out.println("weekday"+ indent + ": " + weekday);
}
String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();
// System.out.println("weekdayNames: " + Arrays.toString(weekdayNames));
// weekdayNames: [, 星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六]
do {
System.out.printf("%4s", weekdayNames[weekday]); // 在weekdayNames数组中取值.
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
while (weekday != firstDayOfWeek); // 满足此条件就继续.
System.out.println();
for (int i = 1; i<= indent; i++)
System.out.print(" "); // 打印缩进位置
d.set(Calendar.DAY_OF_MONTH, 1);
do {
// 开始打印日期
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
// 当前日期后面打印*
if (day == today) System.out.print("*");
else System.out.print(" ");
// 打印日期, 每到一个当地星期其实日, 则换行
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
// 此处容易混的是: 上面已经先打印出了符合周六的日期, 然后+1天,判断相等之后才会进入下一个循环继续打印周日(起始日),所以是没有问题的.
if (weekday == firstDayOfWeek) System.out.println();
}
while (d.get(Calendar.MONTH) == month);
// 打印尾行线(如果需要)
if (weekday !=firstDayOfWeek) System.out.println();
}
}
java笔记 -- GregorianCalendar和DateFormateSymbols 类方法的更多相关文章
- java笔记整理
Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...
- 《Java笔记——基础知识点》
Java笔记--基础知识点 位运算符操作的都是整型的数据. 位运算符是直接对整数的二进制进行计算. 整数不能进行逻辑运算. 运算符优先级别由高到低分别是:() > ! > 算术 ...
- Effective Java笔记一 创建和销毁对象
Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...
- java笔记00-目录
--2013年7月26日17:49:59 学习java已久,趁最近有空,写一个总结: java笔记01-反射:
- java笔记 -- 类与对象
封装: 从形式上看, 封装是将数据和行为组合在一个包中, 并对对象的使用者隐藏了数据的实现方式. 对象中的数据称为实例域, 操纵数据的过程称为方法. 对于每个特定的类实例(对象)都有一组特定的实例域值 ...
- 转 Java笔记:Java内存模型
Java笔记:Java内存模型 2014.04.09 | Comments 1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记 ...
- servlet(6) - servlet总结 - 小易Java笔记
垂阅前必看: 这都是我总结的我觉得是学习servlet应该掌握的,我在学习期间也做了一个博客项目来让所学的知识得以巩固.下面就是博客项目链接.前面的servlet相关的笔记总汇,还有就是我把觉得在学习 ...
- Java笔记 —— 继承
Java笔记 -- 继承 h2{ color: #4ABCDE; } a{ text-decoration: none!important; } a:hover{ color: red !import ...
- Java笔记 —— 方法重载和方法重写
Java笔记 -- 方法重载和方法重写 h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: red ...
随机推荐
- pytorch入门与实践-2.2-CIFAR10分类网络
1--数据载入 |----流程: DataSet->DataLoader->调用DataLoader |----DataLoader迭代器读不到数据,无报错,一直卡住的显现: DataLo ...
- ios学习--iphone 实现下拉菜单
原文地址:ios学习--iphone 实现下拉菜单作者:sdglyuan00 #import @interface DropDown1 : UIView <</span>UITabl ...
- 扫二维码登录实现原理,php版
基础的逻辑图就是这样,但是实际情况还是有几种可能 比如QQ登录,微信登录,微博登录,基本设计都差不多,根据实际情况会有一些差异 问题是,如果设计合理的接口在保证数据的安全性和快速性 设计到的技术不复杂 ...
- 单片机小白应该如何学习stm32的一些实践心得!
嵌入式搬砖道路上的大三狗一枚,撑死算个初学者吧.才学有限,下面仅仅是本人对STM32学习的一点心得与建议,希望对题主有帮助吧. 心得:本人当初学习STM32的时候有一些跟风的因素,自以为学的芯片越多就 ...
- qt 操作注册表,设置ie代理
void SetIEProxy(QString proxy) { QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Wi ...
- laravel使用记录
引用外部文件方式参考地址:https://blog.csdn.net/Darry_Zhao/article/details/52689635 跟踪数据库执行语句 DB::enableQueryLog( ...
- 把项目运行到本地环境及mysql配置
1. 添加本地域名C:\Windows\System32\drivers\etc\hosts 127.0.0.1 local.v7.com 2. 添加一个apache虚拟站点D:\wamp64\bin ...
- 17.2-uC/OS-III消息管理(任务消息队列)
1.任务的消息队列 uC/OS-III在任务中内建了一个消息队列.用户可以直接发送消息给任务而不通过外部消息队列. 这个特性不仅简化了代码, 还提供了效率.每个任务都内建一个消息队列. uC/OS-I ...
- 7.0-uC/OS-III中断管理
1.CPU的中断处理 理器通常有多个中断源. 例如, UART中断. DMA中断. ADC中断.定时器中断等. 2.中断器件标志中断处理器,然后中断处理器将优先级最高的中断提交给CPU. 现在的中断控 ...
- MySQL数据库基础备份
1.备份命令 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql mysqldump -h -uroot -ppasswor ...