当知道一个日期,如何把这个日期所在旬的前后两个日期取出
比如输入20090905,就输入20090901 20090910

解决方案 »

  1.   

    取得天数后作一下判断再把这个方法用下void set(int field, int value)  应该就可以了。
      

  2.   

    旬?
    先截取出年月日   (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()方法追加就可以了吧  对于楼主这样的需求
      

  3.   

    用Calendar
    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()));
    }
    }
      

  4.   

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

  5.   

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

  6.   

    public static final SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMdd");