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 类方法的更多相关文章

  1. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  2. 《Java笔记——基础知识点》

    Java笔记--基础知识点       位运算符操作的都是整型的数据. 位运算符是直接对整数的二进制进行计算. 整数不能进行逻辑运算. 运算符优先级别由高到低分别是:() > ! > 算术 ...

  3. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

  4. java笔记00-目录

    --2013年7月26日17:49:59 学习java已久,趁最近有空,写一个总结: java笔记01-反射:

  5. java笔记 -- 类与对象

    封装: 从形式上看, 封装是将数据和行为组合在一个包中, 并对对象的使用者隐藏了数据的实现方式. 对象中的数据称为实例域, 操纵数据的过程称为方法. 对于每个特定的类实例(对象)都有一组特定的实例域值 ...

  6. 转 Java笔记:Java内存模型

    Java笔记:Java内存模型 2014.04.09 | Comments 1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记 ...

  7. servlet(6) - servlet总结 - 小易Java笔记

    垂阅前必看: 这都是我总结的我觉得是学习servlet应该掌握的,我在学习期间也做了一个博客项目来让所学的知识得以巩固.下面就是博客项目链接.前面的servlet相关的笔记总汇,还有就是我把觉得在学习 ...

  8. Java笔记 —— 继承

    Java笔记 -- 继承 h2{ color: #4ABCDE; } a{ text-decoration: none!important; } a:hover{ color: red !import ...

  9. Java笔记 —— 方法重载和方法重写

    Java笔记 -- 方法重载和方法重写 h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: red ...

随机推荐

  1. C语言面试笔记(8/26)

    在32位的机器环境下,char.short.int.float.double这样的内置数据类型sizeof值的大小分别为1,2,4,4,8: C++标模板库(standard Template Lib ...

  2. lsass.exe占用cpu 解决方法

    最终解决办法如下: RD /s /q "%USERPROFILE%\AppData\Roaming\Microsoft\Protect"

  3. 切分 拆分集合list的方式

    一般有两种,第一是sublist(),代码冗余效率低: 第二种: 引包自 com.google.common.collect.Lists 话不多说直接上实例: List<ContractMode ...

  4. weui开发笔记

    1.标准的weui只是一个css皮肤,当然里面有h5特性所以有一些很好的组件,比如时间选择控件.数字输入框(用于手机号等),在ios——微信中可以做到完美的展示. 2.ui框架以手机移动端为优先显示( ...

  5. 分析Hello2代码

    代码如下String username = request.getParameter("username"); if (username != null && us ...

  6. BeanUtils工具类

    用对象传参,用JavaBean传参. BeanUtils可以优化传参过程. 学习框架之后,BeanUtils的功能都由框架来完成. 一.为什么用BeanUtils? 每次我们的函数都要传递很多参数很麻 ...

  7. 012-docker-安装-fabric:1.4

    一.准备工作 linux 版本.docker.docker-compose go安装且版本较新 uname -a docker --version docker-compose --version g ...

  8. 用php的chr和ord函数实现字符串和ASCII码互转

    http://shenyongqang.blog.163.com/blog/static/22439113201002941856838/ chr和ord函数是用来字符串和ASCII码互转的. ASC ...

  9. int bool 字符串 列表 字典 集合

    1.int和bool 输出i的最大二进制位数inti = 1000 print(i.bit_length()) 2. str int bool list set dict  tuple 相互转换 pr ...

  10. Mac下搭建solr搜索引擎与PHP扩展开发(上)

    首先需要安装jdk,前往 https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html 自 ...