您的位置:首页 > 其它

日历

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));

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: