java算法---获取任意一天的前一天


package com.huifudianxia.interview;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 返回给定日期的前一天
* @author yangjianzhou
*
*/
public class Interview {

public static void main(String[] args) {
Interview inter = new Interview();
System.out.println(inter.method1("13-11-2"));
System.out.println(inter.method2("2013-11-2"));
}

/**
* 使用java API
* @param specifiedDay
* @return
*/
public String method1(String specifiedDay){
Calendar c = Calendar.getInstance();
Date date = null;
try{
date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
}catch (Exception e) {
e.printStackTrace();
}
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day-1);
String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
return dayBefore;
}

/**
* 不使用java API
* @param specifiedDay
* @return
*/
public String method2(String specifiedDay){
String beforeDay = "";
String [] date = specifiedDay.split("-");
int year = Integer.parseInt(date[0]);
int month = Integer.parseInt(date[1]);
int day = Integer.parseInt(date[2]);
if(day>1){
beforeDay = year+"-"+month+"-"+(day-1);
}else{
if(month>1){
day = getDays(month-1,year);
beforeDay = year+"-"+(month-1)+"-"+day;
}else{
year = year -1;
beforeDay = year+"-"+12+"-"+"31";
}
}
return beforeDay;
}

public int getDays(int month,int year){
int days ;
switch(month){
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 : days = 31;
break;
case 4 :
case 6 :
case 9 :
case 11 : days =30;
break;
default :{
if(isLeap(year)){
days = 29;
}else{
days =28;
}
}
}
return days;
}
/**
* 判断是否为闰年
* @param year
* @return
*/
public boolean isLeap(int year){
if((year%4==0)&&(year%100!=0)){
return true;
}else if(year%400==0){
return true;
}else{
return false;
}
}
}



运行结果:


2013-11-01
2013-11-1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值