java编程 输出昨天日期

设计一个函数,该函数功能为:根据入口参数Today,函数返回Today的前一天Yesterday, 入口参数Today和出口参数Yesterday均为8位定长的字符串,格式为:YYYYMMDD。例如:Today=”20040303”,函数返回Yesterday为:”20040302”; Today=”20040301”,函数返回Yesterday为:”20040229”。
为简单,不需要对Today的格式做合法性检查。
C语法定义为,int getYesterday ( char * Today , char * Yesterday ) ;
Java 语法定义为,static String getYesterday ( String Today ),返回值为Yesterday;
注:可能用到的字符串转化为整数的参考函数有int atoi( char * ),static int Integer.parseInt( String );如果使用Java编程,只允许使用字符串类String等基本的方法和类,不允许使用java某些特有类以及这些类自带的方法,如java.util.Date类、java.util.Calendar类。

public class DateCalcu {
public static String getYesterday(String Today) {
String Yes = "";
String year = "", month = "", day = "";
int y = 0, m = 0, d = 0;
year = Today.substring(0, 4);
month = Today.substring(4, 6);
day = Today.substring(6, 8);
y = Integer.parseInt(year);
m = Integer.parseInt(month);
d = Integer.parseInt(day);
d = d - 1;
if (d == 0) {
m = m - 1;
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10) {
d = 31;
}
if (m == 2)
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) // 如果是闰年
d = 29;
else
d = 28;
else if (m != 0)
d = 30;
}
if (m == 0) {
y = y - 1;
m = 12;
d = 31;
}
year = String.valueOf(y);
if (m < 10)
month = "0" + String.valueOf(m);
else
month = String.valueOf(m);
if (d < 10)
day = "0" + String.valueOf(d);
else
day = String.valueOf(d);
Yes = year + month + day;

return Yes;
}

public static void main(String args[]) {
String yesterday = "20090301";
System.out.println("今天是" + yesterday);
yesterday = getYesterday(yesterday);
System.out.println("昨天是" + yesterday);
}
}
////////
//看看符合不符合你的要求
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-19
public class AA {

public static String getYesterday(String today){
String yearStr = today.substring(0, 4);
String monthStr = today.substring(4,6);
String dateStr = today.substring(6);

int year = Integer.parseInt(yearStr);
int month = Integer.parseInt(monthStr);
int date = Integer.parseInt(dateStr);

String yesterday = null;

if(date > 1 && date < 11){
yesterday = yearStr + monthStr + "0" + String.valueOf(date - 1);
}else if(date >= 11){
yesterday = yearStr + monthStr + String.valueOf(date - 1);
}
if(date == 1){
if(month == 5 || month == 7 || month == 10){
yesterday = yearStr + "0" + String.valueOf(month - 1) + "30";
}else if(month == 12){
yesterday = yearStr + String.valueOf(month - 1) + "30";
}else if(month == 11){
yesterday = yearStr + String.valueOf(month - 1) + "31";
}else if(month == 3){
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
yesterday = yearStr + "0229";
}else{
yesterday = yearStr + "0228";
}
}else if(month == 1){
yesterday = String.valueOf(year - 1) + "1231";
}else{
yesterday = yearStr + "0" + String.valueOf(month - 1) + "31";
}
}

return yesterday;
}

public static void main(String[] args) {
String s1 = AA.getYesterday("20070305");//date > 1 && date < 11
String s2 = AA.getYesterday("20070311");//date >= 11
//以下date == 1
String s3 = AA.getYesterday("20071001");//month == 5 || month == 7 || month == 10
String s4 = AA.getYesterday("20071201");//month == 12
String s5 = AA.getYesterday("20071101");//month == 11
String s6 = AA.getYesterday("19040301");//month == 3闰年
String s7 = AA.getYesterday("19000301");//month == 3非闰年
String s8 = AA.getYesterday("20070101");//month == 1
String s9 = AA.getYesterday("20070201");//month == 2
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
System.out.println(s5);
System.out.println(s6);
System.out.println(s7);
System.out.println(s8);
System.out.println(s9);
}
}
第2个回答  2009-03-19
这题没什么意义

java编程 输出昨天日期
public class DateCalcu { public static String getYesterday(String Today) { String Yes = "";String year = "", month = "", day = "";int y = 0, m = 0, d = 0;year = Today.substring(0, 4);month = Today.substring(4, 6);day = Today.substring(6, 8);y = Integer...

java获取昨天的日期和sql如何获得昨天日期
c.add(Calendar.DAY_OF_MONTH, -1); System.out.println("昨天:" + f.format(c.getTime())); }} SQL(MySQL):select date_sub(current_date(),interval 1 day)

在Java中如何输出当前系统日期?
利用java里的Date类输出,进阶的做法还可以用simpleDateformat类进行格式化输出日期。代码如下:import java.text.SimpleDateFormat;import java.util.Date;\/** * 日期格式化 * @author young * *\/public class SimpleDateFormatTest {public static void main(String[] args) {\/\/ 在构造器中传入日期样...

java怎么输出系统当前的时间
利用java里的Date类输出,进阶的做法还可以用simpleDateformat类进行格式化输出日期。代码如下:import java.text.SimpleDateFormat;import java.util.Date;\/ 日期格式化 author young \/ public class SimpleDateFormatTest { public static void main(String[] args) { \/\/ 在构造器中传入日期样式 \/\/ Simp...

java中date的获取以及使用
24小时*60分钟*60秒*1000毫秒,也是86400000毫秒。举例:Date curDate = new Date();var preDate = new Date(curDate.getTime() - 24*60*60*1000); \/\/前一天 var nextDate = new Date(curDate.getTime() + 24*60*60*1000); \/\/后一天 以下图片使用后台输出表示。

Java编程,输入日期输出星期。
具体的实现步骤如下:1. 获取用户输入的日期信息。2. 使用SimpleDateFormat类将用户输入的字符串转换为Date对象。3. 使用Calendar类获取该日期对应的星期数,注意星期在Calendar类中是从1开始计数的,需要进行相应的转换。4. 根据星期数输出相应的星期名称。尽管这个功能在Java编程中并不是最复杂的部分,...

java如何获取某一天的日期?
\/\/1.由用户输入日期 String input = "2008-10-12"; \/\/这个客户端输入 \/\/把用户输入的日期转成 java 日期类 DateFormat df = new SimpleDateFormat("yyyy-MM-dd");Date d = df.parse(input);\/\/输出结果 Calendar cal = Calendar.getInstance();cal.setTime(d);int day = cal.get(DAY_...

java 如何从Long型的时间中取得年月日
第一种方法:package cn.yw.test;import java.text.SimpleDateFormat;import java.util.Date;public class DateTest { public static void main(String[] args){ Date today = new Date();SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");format.format(today);\/*输入日期*\/ Syste...

java里面输入三个整数 以日期形式输出(年月日
Scanner cs = new Scanner(System.in);System.out.println("请输入年份");int year = cs.nextInt();System.out.println("请输入月份");int month = cs.nextInt();System.out.println("请输入日");int day = cs.nextInt();System.out.println("您输入的日期为:"+year + "-" + month...

java问题 获取当前时间
getDate();换成 new Date()就可以了,注意这里Date()是java.util包中的。这样输出的时间格式是:dow mon dd hh:mm:ss zzz yyyy其中:dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)...

相似回答