当前位置: 代码迷 >> J2SE >> 怎么得到一个日期的前一天日期,前一个月的日前,前一年的日期
  详细解决方案

怎么得到一个日期的前一天日期,前一个月的日前,前一年的日期

热度:65   发布时间:2016-04-24 12:56:03.0
如何得到一个日期的前一天日期,前一个月的日前,前一年的日期?
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  // TODO add your handling code here:
  JFormattedTextField jTextDate = getTextField(dateJSpinner);
  String strDate = jTextDate.getText();
   
  System.out.println(strDate);
  }
  public JFormattedTextField getTextField(JSpinner spinner) {
  JComponent editor = spinner.getEditor();
  if (editor instanceof JSpinner.DefaultEditor) {
  return ((JSpinner.DefaultEditor)editor).getTextField();
  } else {
  System.err.println("Unexpected editor type: "
  + spinner.getEditor().getClass()
  + " isn't a descendant of DefaultEditor");
  return null;
  }
  }
//得到spinner的日期在jButton1ActionPerformed中,想得到这个日期(格式0000-00-00)的的前一天日期,前一个月的日前,前一年的日期?是按String 的运算能得到吗?还是别的?
 

------解决方案--------------------
JODA time 你网上搜索一下吧.很好用的包
------解决方案--------------------
获得一个Calendar实例,在利用add方法。

类似:
cal.add( GregorianCalendar.MONTH , -2 );
cal.add( GregorianCalendar.YEAR , 1 );

想减去多少天都可以。
------解决方案--------------------
Calendar cal = Calendar.getInstance();
Calendar calClone = (Calendar) cal.clone();
calClone.setTime(new Date());
calClone.set(Calendar.DAY_OF_YEAR, calClone.get(Calendar.DAY_OF_YEAR) - 1);
System.out.println(calClone.getTime());

calClone = (Calendar) cal.clone();
calClone.setTime(new Date());
calClone.set(Calendar.MONTH, calClone.get(Calendar.MONTH) - 1);
System.out.println(calClone.getTime());

calClone = (Calendar) cal.clone();
calClone.setTime(new Date());
calClone.set(Calendar.YEAR, calClone.get(Calendar.YEAR) - 1);
System.out.println(calClone.getTime());
------解决方案--------------------
好像写多了
Calendar cal = Calendar.getInstance();
Calendar calClone = (Calendar) cal.clone();
calClone.set(Calendar.DAY_OF_YEAR, calClone.get(Calendar.DAY_OF_YEAR) - 1);
System.out.println(calClone.getTime());

calClone = (Calendar) cal.clone();
calClone.set(Calendar.MONTH, calClone.get(Calendar.MONTH) - 1);
System.out.println(calClone.getTime());

calClone = (Calendar) cal.clone();
calClone.set(Calendar.YEAR, calClone.get(Calendar.YEAR) - 1);
System.out.println(calClone.getTime());

------解决方案--------------------
cal.add( GregorianCalendar.MONTH , -2 ); 
cal.add( GregorianCalendar.YEAR , 1 );
------解决方案--------------------
看看这个:
http://blog.csdn.net/dazhen520/archive/2007/05/29/1629914.aspx

http://blog.csdn.net/dazhen520/archive/2007/05/29/1629220.aspx
------解决方案--------------------
一定要gregoriencalender,
juliancalendar 没有润日
Calendar calendar = new GregorianCalendar(pdt);
------解决方案--------------------
搞日期用calendar
  相关解决方案