java日期处理 当知道一个日期,如何把这个日期所在旬的前后两个日期取出比如输入20090905,就输入20090901 20090910 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 取得天数后作一下判断再把这个方法用下void set(int field, int value) 应该就可以了。 旬?先截取出年月日 (d="20090905")year=Integer.valueOf(d.substring(0,4));month=Integer.valueOf(d.substring(4,6));day=Integer.valueOf(d.substring(6,8));再用day去判断在哪个旬内 用字符串的append()方法追加就可以了吧 对于楼主这样的需求 用Calendarpackage test;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class TestCalendar { /** * @param args */ public static final SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMdd"); public static void main(String[] args) { // TODO Auto-generated method stub String str = "20090901"; Date date = null; try { date = dateformat.parse(str); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, 1); System.out.println(dateformat.format(cal.getTime())); cal.add(Calendar.DATE, -2); System.out.println(dateformat.format(cal.getTime())); }} public String getTime(String s){ java.util.Date d=null; try { d=(java.util.Date)new SimpleDateFormat("yyyyMMdd").parse(s); } catch (ParseException e) { e.printStackTrace(); } String s1=new java.sql.Date(d.getTime()-5*86400000).toString().replaceAll("-", "");//前5天 String s2=new java.sql.Date(d.getTime()+5*86400000).toString().replaceAll("-", "");//后5天 System.out.println(s1+" "+s2); return s1+" "+s2; } public static void getTime() { String str = "20090225"; StringBuilder sb = new StringBuilder(); Date date = null; try { date = dateformat.parse(str); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } int year = Integer.valueOf(str.substring(0, 4)); int month = Integer.valueOf(str.substring(4, 6)); int day = Integer.valueOf(str.substring(6, 8)); if (day <= 10) { sb.append(year).append(month < 10 ? "0" + month : month).append( "01"); System.out.println("本旬第一天:" + sb.toString()); sb.setLength(0); sb.append(year).append(month < 10 ? "0" + month : month).append( "10"); System.out.println("本旬最后一天:" + sb.toString()); } if (10 < day && day <= 20) { sb.setLength(0); sb.append(year).append(month < 10 ? "0" + month : month).append( "10"); System.out.println("本旬第一天:" + sb.toString()); sb.setLength(0); sb.append(year).append(month < 10 ? "0" + month : month).append( "20"); System.out.println("本旬最后一天:" + sb.toString()); } if (20 < day) { sb.setLength(0); sb.append(year).append(month < 10 ? "0" + month : month).append( "20"); System.out.println("本旬第一天:" + sb.toString()); sb.setLength(0); sb.append(year).append(month < 10 ? "0" + month : month).append( getEndOfMonth(date)); System.out.println("本旬最后一天:" + sb.toString()); } } public static int getEndOfMonth(Date date) { int i = date.getYear() + 1900; int i_11_ = date.getMonth() + 1; switch (i_11_) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 2: if (isLeapYear(i)) return 29; return 28; case 4: case 6: case 9: case 11: return 30; default: throw new IllegalStateException("错误的月份:" + i_11_); } } public static boolean isLeapYear(int i) { if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) return true; return false; } public static final SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMdd"); 请教执行顺序问题 JAVA中==跟equals的问题 多线程的程序帮忙看看 ssl问题啊 jar文件能不能解压后当作bean使用? 简单的画图问题 关于JTextField的一个小问题 求大神帮忙解答~~~ 求 Class LineNumberReader 获得整个文件行数得代码 thinking in java 习题求解 请高手给点思路? Random.nextInt()
先截取出年月日 (d="20090905")
year=Integer.valueOf(d.substring(0,4));
month=Integer.valueOf(d.substring(4,6));
day=Integer.valueOf(d.substring(6,8));再用day去判断在哪个旬内 用字符串的append()方法追加就可以了吧 对于楼主这样的需求
package test;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class TestCalendar { /**
* @param args
*/ public static final SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMdd"); public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "20090901";
Date date = null;
try {
date = dateformat.parse(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, 1);
System.out.println(dateformat.format(cal.getTime()));
cal.add(Calendar.DATE, -2);
System.out.println(dateformat.format(cal.getTime()));
}
}
java.util.Date d=null;
try {
d=(java.util.Date)new SimpleDateFormat("yyyyMMdd").parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
String s1=new java.sql.Date(d.getTime()-5*86400000).toString().replaceAll("-", "");//前5天
String s2=new java.sql.Date(d.getTime()+5*86400000).toString().replaceAll("-", "");//后5天
System.out.println(s1+" "+s2);
return s1+" "+s2;
}
String str = "20090225";
StringBuilder sb = new StringBuilder();
Date date = null;
try {
date = dateformat.parse(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int year = Integer.valueOf(str.substring(0, 4));
int month = Integer.valueOf(str.substring(4, 6));
int day = Integer.valueOf(str.substring(6, 8));
if (day <= 10) {
sb.append(year).append(month < 10 ? "0" + month : month).append(
"01");
System.out.println("本旬第一天:" + sb.toString());
sb.setLength(0);
sb.append(year).append(month < 10 ? "0" + month : month).append(
"10");
System.out.println("本旬最后一天:" + sb.toString());
}
if (10 < day && day <= 20) {
sb.setLength(0);
sb.append(year).append(month < 10 ? "0" + month : month).append(
"10");
System.out.println("本旬第一天:" + sb.toString());
sb.setLength(0);
sb.append(year).append(month < 10 ? "0" + month : month).append(
"20");
System.out.println("本旬最后一天:" + sb.toString());
}
if (20 < day) {
sb.setLength(0);
sb.append(year).append(month < 10 ? "0" + month : month).append(
"20");
System.out.println("本旬第一天:" + sb.toString());
sb.setLength(0);
sb.append(year).append(month < 10 ? "0" + month : month).append(
getEndOfMonth(date));
System.out.println("本旬最后一天:" + sb.toString());
}
} public static int getEndOfMonth(Date date) {
int i = date.getYear() + 1900;
int i_11_ = date.getMonth() + 1;
switch (i_11_) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 2:
if (isLeapYear(i))
return 29;
return 28;
case 4:
case 6:
case 9:
case 11:
return 30;
default:
throw new IllegalStateException("错误的月份:" + i_11_);
}
} public static boolean isLeapYear(int i) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
return true;
return false;
}