日历
2015-11-26 17:55
330 查看
package xxx;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author njchenyi
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class FindDates {
public static void main(String[] args) throws ParseException {
new FindDates().test(Calendar.getInstance());
}
public static List<Date> findDates(Date dBegin, Date dEnd) {
List lDate = new ArrayList();
lDate.add(dBegin);
Calendar calBegin = Calendar.getInstance();
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
calEnd.setTime(dEnd);
while (dEnd.after(calBegin.getTime())) {
calBegin.add(Calendar.DAY_OF_MONTH, 1);
lDate.add(calBegin.getTime());
}
return lDate;
}
/**
* 日 1 2 3 4 5 6 将一周的第几天转为下表 1 2 3 4 5 6 7
*
* @param dayOfWeek
* @return
*/
private int getDaySpacing(int dayOfWeek) {
if (Calendar.SUNDAY == dayOfWeek)
return 6;
else
return dayOfWeek - 2;
}
private int getDaySpacingEnd(int dayOfWeek) {
return 8 - dayOfWeek;
}
public void d(Calendar dateDisplay) {
Calendar cal;
Integer counter = 0;
if (dateDisplay != null)
cal = (Calendar) dateDisplay.clone();
else
cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd");
sdf.format(cal.getTime());
System.out.println(sdf.format(cal.getTime()));
// 回到日历当前月的第一天
cal.set(Calendar.DAY_OF_MONTH, 1);
System.out.println(sdf.format(cal.getTime()));
// 当前月的第一天星期几
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
// 当天星期几与前一个月多余的几个星期1 2 3 。。
int daySpacing = getDaySpacing(cal.get(Calendar.DAY_OF_WEEK));
System.out.println(daySpacing);
// INFO : wrong calculations of first line - fixed
if (daySpacing > 0) {
Calendar prevMonth = (Calendar) cal.clone();
// 获取前一个月的
prevMonth.add(Calendar.MONTH, -1);
System.out.println(sdf.format(prevMonth.getTime()));
// 获取月的最大天数
// System.out.println(prevMonth.getActualMaximum(Calendar.DAY_OF_MONTH));
// 得到前一个月的间隔数的起始时间点
// prevMonth.getActualMaximum(Calendar.DAY_OF_MONTH)- daySpacing + 1
prevMonth.set(Calendar.DAY_OF_MONTH,
prevMonth.getActualMaximum(Calendar.DAY_OF_MONTH)
- daySpacing + 1);
for (int i = 0; i < daySpacing; i++) {
int x = Integer.valueOf(prevMonth.get(Calendar.DAY_OF_MONTH));
System.out.println("前一个月的:" + x);
counter++;
//日期加一天
prevMonth.add(Calendar.DAY_OF_MONTH, 1);
}
}
int firstDay = cal.get(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH,
cal.getActualMaximum(Calendar.DAY_OF_MONTH));
int lastDay = cal.get(Calendar.DAY_OF_MONTH) + 1;
// 得到当前月的天数 星期
for (int i = firstDay; i < lastDay; i++) {
cal.set(Calendar.DAY_OF_MONTH, i - 1);
Calendar date = (Calendar) cal.clone();
date.add(Calendar.DAY_OF_MONTH, 1);
System.out.println(sdf.format(date.getTime()));
counter++;
}
if (dateDisplay != null)
cal = (Calendar) dateDisplay.clone();
else
cal = Calendar.getInstance();
System.out.println("--" + sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_MONTH,
cal.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println("--" + sdf.format(cal.getTime()));
daySpacing = getDaySpacingEnd(cal.get(Calendar.DAY_OF_WEEK));
System.out.println("--" + cal.get(Calendar.DAY_OF_WEEK));
if (daySpacing > 0) {
for (int i = 0; i < daySpacing; i++) {
// 下一个月的
System.out.println(i + 1);
counter++;
}
}
}
public void test(Calendar dateDisplay) throws ParseException {
int x = dateDisplay.get(Calendar.DAY_OF_MONTH);
SimpleDateFormat dg = new SimpleDateFormat("yyyy年MM月dd日");
String xx = dg.format(dateDisplay.getTime());
System.out.println(xx);
String yy = xx.substring(0, 4);
int st = Integer.parseInt(yy) + 1;
String start = xx;
String end = xx.replace(yy, "" + st);
System.out.println("-" + end);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date dBegin = sdf.parse(start);
Date dEnd = sdf.parse(end);
List<Date> lDate = findDates(dBegin, dEnd);
SimpleDateFormat sdf2 = new SimpleDateFormat("MM月dd日E");
for (Date date : lDate) {
System.out.println(sdf2.format(date));
}
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author njchenyi
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class FindDates {
public static void main(String[] args) throws ParseException {
new FindDates().test(Calendar.getInstance());
}
public static List<Date> findDates(Date dBegin, Date dEnd) {
List lDate = new ArrayList();
lDate.add(dBegin);
Calendar calBegin = Calendar.getInstance();
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
calEnd.setTime(dEnd);
while (dEnd.after(calBegin.getTime())) {
calBegin.add(Calendar.DAY_OF_MONTH, 1);
lDate.add(calBegin.getTime());
}
return lDate;
}
/**
* 日 1 2 3 4 5 6 将一周的第几天转为下表 1 2 3 4 5 6 7
*
* @param dayOfWeek
* @return
*/
private int getDaySpacing(int dayOfWeek) {
if (Calendar.SUNDAY == dayOfWeek)
return 6;
else
return dayOfWeek - 2;
}
private int getDaySpacingEnd(int dayOfWeek) {
return 8 - dayOfWeek;
}
public void d(Calendar dateDisplay) {
Calendar cal;
Integer counter = 0;
if (dateDisplay != null)
cal = (Calendar) dateDisplay.clone();
else
cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd");
sdf.format(cal.getTime());
System.out.println(sdf.format(cal.getTime()));
// 回到日历当前月的第一天
cal.set(Calendar.DAY_OF_MONTH, 1);
System.out.println(sdf.format(cal.getTime()));
// 当前月的第一天星期几
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
// 当天星期几与前一个月多余的几个星期1 2 3 。。
int daySpacing = getDaySpacing(cal.get(Calendar.DAY_OF_WEEK));
System.out.println(daySpacing);
// INFO : wrong calculations of first line - fixed
if (daySpacing > 0) {
Calendar prevMonth = (Calendar) cal.clone();
// 获取前一个月的
prevMonth.add(Calendar.MONTH, -1);
System.out.println(sdf.format(prevMonth.getTime()));
// 获取月的最大天数
// System.out.println(prevMonth.getActualMaximum(Calendar.DAY_OF_MONTH));
// 得到前一个月的间隔数的起始时间点
// prevMonth.getActualMaximum(Calendar.DAY_OF_MONTH)- daySpacing + 1
prevMonth.set(Calendar.DAY_OF_MONTH,
prevMonth.getActualMaximum(Calendar.DAY_OF_MONTH)
- daySpacing + 1);
for (int i = 0; i < daySpacing; i++) {
int x = Integer.valueOf(prevMonth.get(Calendar.DAY_OF_MONTH));
System.out.println("前一个月的:" + x);
counter++;
//日期加一天
prevMonth.add(Calendar.DAY_OF_MONTH, 1);
}
}
int firstDay = cal.get(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH,
cal.getActualMaximum(Calendar.DAY_OF_MONTH));
int lastDay = cal.get(Calendar.DAY_OF_MONTH) + 1;
// 得到当前月的天数 星期
for (int i = firstDay; i < lastDay; i++) {
cal.set(Calendar.DAY_OF_MONTH, i - 1);
Calendar date = (Calendar) cal.clone();
date.add(Calendar.DAY_OF_MONTH, 1);
System.out.println(sdf.format(date.getTime()));
counter++;
}
if (dateDisplay != null)
cal = (Calendar) dateDisplay.clone();
else
cal = Calendar.getInstance();
System.out.println("--" + sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_MONTH,
cal.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println("--" + sdf.format(cal.getTime()));
daySpacing = getDaySpacingEnd(cal.get(Calendar.DAY_OF_WEEK));
System.out.println("--" + cal.get(Calendar.DAY_OF_WEEK));
if (daySpacing > 0) {
for (int i = 0; i < daySpacing; i++) {
// 下一个月的
System.out.println(i + 1);
counter++;
}
}
}
public void test(Calendar dateDisplay) throws ParseException {
int x = dateDisplay.get(Calendar.DAY_OF_MONTH);
SimpleDateFormat dg = new SimpleDateFormat("yyyy年MM月dd日");
String xx = dg.format(dateDisplay.getTime());
System.out.println(xx);
String yy = xx.substring(0, 4);
int st = Integer.parseInt(yy) + 1;
String start = xx;
String end = xx.replace(yy, "" + st);
System.out.println("-" + end);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date dBegin = sdf.parse(start);
Date dEnd = sdf.parse(end);
List<Date> lDate = findDates(dBegin, dEnd);
SimpleDateFormat sdf2 = new SimpleDateFormat("MM月dd日E");
for (Date date : lDate) {
System.out.println(sdf2.format(date));
}
}
}
相关文章推荐
- java socket报 connection reset的原因和解决方式
- (WJW)构建企业级Docker_Registry_V2
- 文章标题
- 【LEETCODE】92-Reverse Linked List II
- 欢迎使用CSDN-markdown编辑器
- js中函数的定义有无顺序的区别
- 图像旋转
- linux下bluetooth编程(八)SDP层编程
- 八皇后问题求解
- 高等特性
- 获取经过多少月分
- 第8章-对话框(二)总结一下
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Android网络编程常用的三种方法
- [前端] node net模块测试
- 使用axis2调用sap生成的webservice(带用户密码认证)
- HTML Input控件
- 基于Hadoop的云存储系统
- Android ndk 入门4 - C++实现
- .net的enter键的默认提交