直接看例子:

import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale; public class CalendarTest
{
public static void main(String[] args)
{
GregorianCalendar d = new GregorianCalendar();
String[] weekdayNames = new DateFormatSymbols(Locale.US).getShortWeekdays();
String[] monthsNames = new DateFormatSymbols(Locale.US).getShortMonths(); int today = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("Today is %2d in the month.%n", today); int month = d.get(Calendar.MONTH);
System.out.printf("This month is %4s.%n", monthsNames[month]); d.set(Calendar.DAY_OF_MONTH, 1);
System.out.printf("The first day of this month is %d.%n", d.get(Calendar.DAY_OF_MONTH)); int weekday = d.get(Calendar.DAY_OF_WEEK);
System.out.printf("The first week day of this month is %4s.%n", weekdayNames[weekday]); int firstDayOfWeek = d.getFirstDayOfWeek();
System.out.printf("The first week day of this week is %4s.%n", weekdayNames[firstDayOfWeek]); int indent = 0;
while (weekday != firstDayOfWeek)
{
indent++; // 当月开始日期减1天,星期自然也就减1天,一直减到星期天
d.add(Calendar.DAY_OF_MONTH, -1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
System.out.printf("Today - Monday = %d.%nThe day is %4s now.%n", indent, weekdayNames[weekday]);
System.out.printf("The day is %4s %4s now.%n",
monthsNames[d.get(Calendar.MONTH)],
d.get(Calendar.DAY_OF_MONTH)); System.out.println(""); // 打印星期名称,这里采用美式日期格式,从周日开始
do
{
// 从下标为1开始取,美式星期下标为1取到的是周日
System.out.printf("%4s", weekdayNames[weekday]); // 上面日期已经减到星期天了,所以现在又从星期天开始加回去,下标从1开始加到7再变回1
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.printf("%4s", "");
} 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(" ");
} // 日期加1,直到月末
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK); // 日期到周六换行
if (weekday == firstDayOfWeek)
{
System.out.println();
}
} while (d.get(Calendar.MONTH) == month); if (weekday != firstDayOfWeek)
{
System.out.println();
}
} }

  输出:

Today is 23 in the month.
This month is Aug.
The first day of this month is 1.
The first week day of this month is Wed.
The first week day of this week is Sun.
Today - Monday = 3.
The day is Sun now.
The day is Jul 29 now. Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23* 24 25
26 27 28 29 30 31

java的日期的更多相关文章

  1. [转载]Java 8 日期&时间 API

    Java 8 日期和时间 声明 本文转自http://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant,以mark ...

  2. 【转】JAVA 8 日期/时间(Date Time)API指南

    前言 本来想写下Java 8的日期/时间API,发现已经有篇不错的文章了,那就直接转载吧~ PS:主要内容没变,做了部分修改. 原文链接: journaldev 翻译: ImportNew.com - ...

  3. 记一个JAVA关于日期的坑

    JAVA解析日期格式代码,之前一直写成:“yyyy-MM-dd hh:mm”,比如"2016-01-18 11:00"."2016-01-18 15:00"都可 ...

  4. java获取日期之间的差异

    转载请注明出处.谢谢http://blog.csdn.net/harryweasley/article/details/42121485 当想到要计算差值.我们肯定想的是"2014.12.1 ...

  5. java 获取日期的几天前,几个月前和几年前

    java 获取日期的几天前,几个月前和几年前. package bys.utils; import java.util.Date; /** * Created by toutou on 2015/3/ ...

  6. Java 8 日期时间 API

    转自:https://www.runoob.com/java/java8-datetime-api.html Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与 ...

  7. JAVA 8 日期工具类

    JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...

  8. Java 8 新特性-菜鸟教程 (8) -Java 8 日期时间 API

    Java 8 日期时间 API Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理. 在旧版的 Java 中,日期时间 API 存在诸多问题,其中有: ...

  9. Java Date 日期 时间 相关方法

    DateTools.java import java.text.SimpleDateFormat; import java.util.Date; /** * 日期操作类 */ public class ...

  10. Java 8 – 日期和时间实用技巧

    当你开始使用Java操作日期和时间的时候,会有一些棘手.你也许会通过System.currentTimeMillis() 来返回1970年1月1日到今天的毫秒数.或者使用Date类来操作日期:当遇到加 ...

随机推荐

  1. Day34 设计模式

    参考博客: http://www.cnblogs.com/alex3714/articles/5760582.html 什么是设计模式 Christopher Alexander:“每一个模式描述了一 ...

  2. p标签多行文字内容实现上下垂直居中兼容ie8

    之前实现上下居中一般都是用height和line-height的来设置. 今天在修改样式的时候,p标签的文字内容可能是一行也可能是两行, 所以用height和line-height就没效果. 今天找到 ...

  3. Linux:expand命令详解

    expand 用于将文件的制表符[TAB]转换为空格,将结果显示到标准输出设备 语法 expand(选项)(file) 选项 -t<数字>:指定制表符所代表的空白字符的个数,而不使用默认的 ...

  4. Linux下使用Opencv打开笔记本摄像头

    新建test文件夹,文件夹存在test.cpp和CMakeLists.txt test.cpp#include <iostream> #include <string> #in ...

  5. 42.zip

    最近看linux的解压缩,无意间了解到了一个和压缩率相关的小故事——42.zip 一般我们使用压缩工具的时候,都会用到无损压缩技术,对于无损压缩,算法非常重要,不同的算法实现 的压缩率和速度有很大差别 ...

  6. CUDA Samples: ripple

    以下CUDA sample是分别用C++和CUDA实现的生成的波纹图像,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程CUDA实战>一书的第五章,各个文件内容如下 ...

  7. 强化学习使用pygame模块的安装

    当你正想运行强化学习的游戏时,突然提示没有安装pygame模块怎么办呢? 其实很简单,通过下面的命令,就可以安装: D:\AI\sample\tensorforce>pip install py ...

  8. Android 框架学习3:从 EventBus 中学到的精华

    关联文章: EventBus 3.0 的特点与如何使用 源码分析 EventBus 3.0 如何实现事件总线 学习的目的是为了超越,经过前面对 EventBus 3.0 的学习,我们已经对它相当熟悉了 ...

  9. js 要写严格模式

    js 为了能在移动端通用,要写严格模式: 这里多了个逗号,在pc上浏览器可以通过,但是在手机端就不能.

  10. Synchronized之一:基本使用

    目录: <Java并发编程之三:volatile关键字解析 转载> <Synchronized之一:基本使用> Synchronized作用 1.Synchronized可以保 ...