1. Calculate the last day of Next month
Input: a date (including: year, month, day)
Output: last day of next month (including: year,month, day)
E.g. input: 2010/10/15; output: 2010/11/30
2. Test your program systemically. Write your testing cases.求一个完整的编程。谢谢。
Input: a date (including: year, month, day)
Output: last day of next month (including: year,month, day)
E.g. input: 2010/10/15; output: 2010/11/30
2. Test your program systemically. Write your testing cases.求一个完整的编程。谢谢。
解决方案 »
- 参数是 JButton ...jb?高手可以解答一下吗?
- hash的词频代码有吗?JAVA
- 初学JAVA,请教简单基础问题 new java.awt.Point();
- 异常应该怎样抛?(静态变量初始化)
- 问一个弱问题,java -jar是什么意思,着急。
- 在java中怎样与SQL2000做连接??
- 弱弱的问
- java.util.MissingResourceException: Can't find bundle for base name operation, locale zh_CN?
- 在Java中怎样创建一个数据库,谢谢!
- 那里有Jbuilder8的中文使用说明或者书
- 求助:使用java内嵌谷歌浏览器内核
- Hibernate更新数据,报错,求教大侠指点,万分感谢
好吧,input的年月日都这么存放的:
inYear = ...
inMonth = ...(1~12)
inDay = ...(1~28,29...) 下个月的计算:
if (inMonth == 12) {
inYear++;
}
switch (inMonth){
case 1: return is闰年(inYear)?:29:28;
case 2,4,6,7,9,11: return 31;
default: return 30;
}
inYear = ...
inMonth = ...(1~12)
inDay = ...(1~28,29...) switch (inMonth){
case 1: return is闰年inYear)? inYear+"/2/29":inYear+"/2/28";
case 2,4,6,7,9,11: return inYear+"/"+(inMonth+1)+"/31";
case 12: return (inYear+1)+"/1/31";
default: return inYear+"/"+(inMonth+1)+"/30";
}
String aa="2010/10/15";
SimpleDateFormat f1=new SimpleDateFormat("yyyy/MM/dd");
Calendar c = Calendar.getInstance();
c.setTime(f1.parse(aa));
c.add(c.MONTH,2);//加两个月
c.set(c.DAY_OF_MONTH,1);//设置为1号
c.add(c.DAY_OF_MONTH,-1);//减1天;
System.out.println(f1.format(c.getTime()));
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;public class DateUtil {
private static Map<String, SimpleDateFormat> map=new HashMap<String, SimpleDateFormat>();
public static final String dateFormat ="yyyy-MM-dd";
private static SimpleDateFormat getSimpleDateFormat(String dateFormat){
SimpleDateFormat sf=map.get(dateFormat);
if(sf==null){
sf=new SimpleDateFormat(dateFormat);
map.put(dateFormat, sf);
}
return sf;
}
/**
* 获取与给定日期参数相差天的日期
* @param date
* @param differdays
* @return
*/
public static Date newDate(Date srcDate,int differdays){
Date date = new Date(srcDate.getTime());
if(date==null){
return new Date();
}
date.setDate(date.getDate()+differdays);
return date;
}
/**
* 根据传入的日期,格式化为指定的日期格式
* @param date 日期参数
* @param dateFormat 格式 例如:yyyy-MM-dd
* @return
*/
public static String dateToString(Date date,String dateFormat){
try{
if(date==null){
return "";
}
SimpleDateFormat df=getSimpleDateFormat(dateFormat);
return df.format(date);
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* 将日期转化为字符串,默认格式为yyyy-MM-dd
* @param date
* @return
*/
public static String dateToString(Date date){
try{
if(date==null){ return ""; }
SimpleDateFormat df=getSimpleDateFormat("yyyy-MM-dd");
return df.format(date);
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* 根据传入的日期,可根据differdays 参数设置到另一日期,再格式化日期
* @param date 日期参数
* @param differdays 与给定的日期相差天数 负数表示指定日期前多少天 正数表示日期后多少天
* @param dateFormat 格式 例如:yyyy-MM-dd
* @return
*/
@SuppressWarnings("deprecation")
public static String dateToString(Date srcDate,int differdays,String dateFormat){
Date date = new Date(srcDate.getTime());
date.setDate(date.getDate()+differdays);
try{
SimpleDateFormat df=getSimpleDateFormat(dateFormat);
return df.format(date);
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* 获取指定参数在一年中所处的周期
* @param date
* @param differdays
* @return
*/
public static String getWeek(Date srcDate,int differdays){
Date date = new Date(srcDate.getTime());
date.setDate(date.getDate()+differdays);
java.text.SimpleDateFormat sd=getSimpleDateFormat("w");
return sd.format(date);
}
/**
* 根据给定日期,按需要转换的格式转换成字符串
* @param dateString
* @param dateFormat
* @return
*/
public static Date stringToDate(String dateString,String dateFormat){
try{
if(StringUtil.isEmpty(dateString)){
return new Date();
}
SimpleDateFormat df=getSimpleDateFormat(dateFormat);
return df.parse(dateString);
}catch(Exception e){
e.printStackTrace();
}
return new Date();
}
/**
* 获取一月中的最后一天
* @param date
* @param differdays
* @return
*/
public static Date getLastDayOfMonth(Date srcDate,int differdays) {
Date date = new Date(srcDate.getTime());
date.setDate(date.getDate()+differdays);
Calendar cDay1 = Calendar.getInstance();
cDay1.setTime(date);
final int lastDay = cDay1.getActualMaximum(Calendar.DAY_OF_MONTH);
Date lastDate = cDay1.getTime();
lastDate.setDate(lastDay);
return lastDate;
}
/**
* 获取一月中的第一天
* @param date
* @param differdays
* @return
*/
public static Date getFirstDayOfMonth(Date srcDate,int differdays) {
Date date = new Date(srcDate.getTime());
date.setDate(date.getDate()+differdays);
Calendar cDay1 = Calendar.getInstance();
cDay1.setTime(date);
final int lastDay = cDay1.getActualMinimum(Calendar.DAY_OF_MONTH);
Date lastDate = cDay1.getTime();
lastDate.setDate(lastDay);
return lastDate;
}
/**
* 获取给定日期所在周的第一天的时间
* @param date
* @param differdays
* @return
*/
public static Date getFirstDayOfWeek(Date srcDate,int differdays) {
Date date = new Date(srcDate.getTime());
date.setDate(date.getDate()+differdays);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
Date firstDateOfWeek; // 得到当天是这周的第几天
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); // 减去dayOfWeek,得到第一天的日期,因为Calendar用0-6代表一周七天,所以要减一
calendar.add(Calendar.DAY_OF_WEEK, -(dayOfWeek - 1));
firstDateOfWeek = calendar.getTime(); // 每周7天,加6,得到最后一天的日子
return firstDateOfWeek;
}
/**
* 获取一周中的最后一天
* @param date
* @param differdays
* @return
*/
public static Date getLastDayOfWeek(Date srcDate,int differdays) {
Date date = new Date(srcDate.getTime());
date.setDate(date.getDate()+differdays);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
Date lastDateOfWeek; // 得到当天是这周的第几天
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); // 减去dayOfWeek,得到第一天的日期,因为Calendar用0-6代表一周七天,所以要减一
calendar.add(Calendar.DAY_OF_WEEK, -(dayOfWeek - 1));
calendar.add(Calendar.DAY_OF_WEEK, 6);
lastDateOfWeek = calendar.getTime();
return lastDateOfWeek;
}
/**
* 获取一年中的第一个月
* @param date
* @param differmonths
* @return
*/
public static Date getFirstMonthOfYear(Date srcDate,int differmonths){
Date date = new Date(srcDate.getTime());
date.setMonth(date.getMonth()+differmonths);
Calendar cDay1 = Calendar.getInstance();
cDay1.setTime(date);
date.setDate(cDay1.getActualMinimum(Calendar.DAY_OF_MONTH));
date.setMonth(cDay1.getActualMinimum(Calendar.MONTH));
return getFirstSecondOfOneDay(date);
}
/**
* 获取一年中的最后一月
* @param date
* @param differmonths
* @return
*/
public static Date getLastMonthOfYear(Date srcDate,int differmonths){
Date date = new Date(srcDate.getTime());
date.setMonth(date.getMonth()+differmonths);
Calendar cDay1 = Calendar.getInstance();
cDay1.setTime(date);
date.setDate(cDay1.getActualMaximum(Calendar.DAY_OF_MONTH));
date.setMonth(cDay1.getActualMaximum(Calendar.MONTH));
return getLastSecondOfOneDay(date);
}
/**
* 获取一天中的第一秒时间
* @param date
* @return
*/
public static Date getFirstSecondOfOneDay(Date srcDate){
Date date = new Date(srcDate.getTime());
Calendar c = Calendar.getInstance();
date.setHours(c.getActualMinimum(Calendar.HOUR_OF_DAY));
date.setMinutes(c.getActualMinimum(Calendar.MINUTE));
date.setSeconds(c.getActualMinimum(Calendar.SECOND));
return date;
}
/**
* 获取一天中最后一秒时间
* @param date
* @return
*/
public static Date getLastSecondOfOneDay(Date srcDate){
Date date = new Date(srcDate.getTime());
Calendar c = Calendar.getInstance();
date.setHours(c.getActualMaximum(Calendar.HOUR_OF_DAY));
date.setMinutes(c.getActualMaximum(Calendar.MINUTE));
date.setSeconds(c.getActualMaximum(Calendar.SECOND));
return date;
}
public static void main(String[] args){
Date date = new Date();
date = getFirstMonthOfYear(date,0);
System.out.println(date.toLocaleString());
}
}