当前位置: 代码迷 >> Java相关 >> [求助]计算若干天数后的日期值(已解决)
  详细解决方案

[求助]计算若干天数后的日期值(已解决)

热度:258   发布时间:2007-02-28 21:18:14.0
SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd-a");
java.util.Date da = new java.util.Date();
System.out.println(fm.format(da.getTime()));


我只知道这样格式现在的日期,但是不知道怎么格式输入的日期。。
----------------解决方案--------------------------------------------------------
应该可以反过来
比如输入"2007-01-20"可以得到一个07年1月20日的Date对象

有了它以后,就可以做你想做的事情了
----------------解决方案--------------------------------------------------------
是啊。。
问题是怎么得到啊??
----------------解决方案--------------------------------------------------------
String input=JOptionPane.showInputDialog(null,"请输入日期:(格式:yyyy-MM-dd)");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

Date now=sdf.parse(input);
然后会了吧
然后再得到用户输入的天数,然后调用Calendar的方法求之


----------------解决方案--------------------------------------------------------
谢谢谢谢!!

我。。真的是脑子转不过来弯!!
----------------解决方案--------------------------------------------------------
呵呵,好好努力吧
----------------解决方案--------------------------------------------------------
Date now=sdf.parse(input);

这句话要报错的嘛。。
----------------解决方案--------------------------------------------------------

import javax.swing.*;
import java.util.*;
import java.text.*;

public class HW2
{
public static void main(String[] args)
{
GregorianCalendar gc = new GregorianCalendar();
String input=JOptionPane.showInputDialog(null,"请输入日期:(格式:yyyy-MM-dd)");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
java.util.Date da = new java.util.Date();
Date now=sdf.parse(input);
int count = JOptionPane.showInternalConfirmDialog(null,"请输入您想计算的天数");
}
}


就是那句话要报错

[此贴子已经被作者于2007-2-28 22:11:36编辑过]


----------------解决方案--------------------------------------------------------
对这二方法有点疑问

add(int field, int amount)
根据日历的规则,为给定的日历字段添加或减去指定的时间量。
set(int field, int value)
将给定的日历字段设置为给定值。

是不是set方法不能改变原时间的值呀?set不是设置吗?

还有就是无论add或set好像都不会自动判断闰年...
如2000年2月28日 add(Calendar.DATE,1);
结果会输出2000年2月29

是我用错了还是add和set方法确实不会判断闰年?
有没有好的解决这个问题的方法?

[此贴子已经被作者于2007-2-28 23:39:18编辑过]


----------------解决方案--------------------------------------------------------

下面代码体现了我上面提出的二个问题..

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import java.text.DateFormat;


public class DateTest extends JFrame
{
DateTest(String title)
{
super(title);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setContentPane(new MyPanel());
}
public static void main(String[] args)
{
DateTest dt = new DateTest("HelloWorld");
dt.setSize(new Dimension(300,300));
dt.setVisible(true);
}
}

class MyPanel extends JPanel
{
JButton btnInit = new JButton("设定初始日期");
JButton btnVeiw = new JButton("预看N天后日期");
JButton btnSet = new JButton("设为N天后日期");
String date="";

Calendar c = new GregorianCalendar(); //对同一个时间对象操作

DateFormat df = DateFormat.getDateInstance();
Date d = null;

MyPanel()
{

this.setLayout(new BorderLayout());
this.add(btnInit,BorderLayout.NORTH);
this.add(btnVeiw,BorderLayout.CENTER);
this.add(btnSet,BorderLayout.SOUTH);


//设定初始日期
btnInit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
date = JOptionPane.showInputDialog("请输入一个日期:(YYYY-MM-DD)");
try {
d = df.parse(date);
c.setTime(d);
} catch (ParseException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}

}
});

//预看N天后日期
btnVeiw.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int addDate = Integer.parseInt(JOptionPane.showInputDialog("请输入希望得到几天后的日期:"));

c.add(Calendar.DAY_OF_MONTH,addDate);

DateFormat dff = DateFormat.getDateInstance(DateFormat.FULL);
JOptionPane.showMessageDialog(null, "日期是:" + dff.format(c.getTime()));

}

});


btnSet.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int addDate = Integer.parseInt(JOptionPane.showInputDialog("请输入希望得到几天后的日期:"));

c.set(Calendar.DATE,addDate);

DateFormat dff = DateFormat.getDateInstance(DateFormat.FULL);
JOptionPane.showMessageDialog(null, "日期是:" + dff.format(c.getTime()));

}

});

}
}


----------------解决方案--------------------------------------------------------
  相关解决方案