| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 745 人关注过本帖
标题:怎样实现时间
只看楼主 加入收藏
laishang
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-3-2
收藏
 问题点数:0 回复次数:6 
怎样实现时间

下面这个程序实现的是从系统获得当前日期,再输出昨天与明天是几月几日。但是如果我要任意输入一个日期,要求输出这个日期的昨天与明天的日期。比如,输入1996年03月01日,输出昨天是1996年02月29日,明天是1996年03月02日。应该怎样修改这个程序呢?谢谢指点。

import java.util.*;
import java.text.SimpleDateFormat;
public class Rightnow {

public static void main(String[] args) {
Date today=new Date();

SimpleDateFormat sdf;
sdf=new SimpleDateFormat("yyyy年MM月dd日");
System.out.println(" 即"+sdf.format(today));
long lg=System.currentTimeMillis();

Date tomorrow=new Date(lg+24*60*60*1000);
Date yesterday=new Date(lg-24*60*60*1000);
System.out.println("明天="+sdf.format(tomorrow));
System.out.println("昨天="+sdf.format(yesterday));


}
}

搜索更多相关主题的帖子: java sdf import public Date 
2006-03-16 22:05
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
public abstract void add(int field,
                         int amount)
Adds or subtracts the specified amount of time to the given calendar field, based on the calendar's rules. For example, to subtract 5 days from the current time of the calendar, you can achieve it by calling:

add(Calendar.DAY_OF_MONTH, -5).

Parameters:
field - the calendar field.
amount - the amount of date or time to be added to the field.
对于日期等的操 作现在推荐不要用Date了,可以使用Calendar类,它可以很方便的实现一些日期方面的操作

可惜不是你,陪我到最后
2006-03-17 10:53
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏
得分:0 

这里有一个可以计算出当天日期是星期几的例子,你可以参考一下
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;

/*
<applet codebase="." code="Timetest" width="400" height="200">
</applet>
*/

public class Timetest extends JApplet implements ActionListener
{
JComboBox JcmbYear, JcmbMonth, JcmbDay;
JLabel JlblYear, JlblMonth, JlblDay, JlblResult;
JButton JbtnOK;
Calendar calendar;
int w = 0;
String str;

public void init()
{
Container contentPane = getContentPane();//得到内容板
contentPane.setLayout(new BorderLayout());//设置布局

calendar = Calendar.getInstance();//获得系统当前日期
//三个下拉列表
JcmbYear = new JComboBox();
JcmbMonth = new JComboBox();
JcmbDay = new JComboBox();
//四个标签
JlblYear = new JLabel("年");
JlblMonth = new JLabel("月");
JlblDay = new JLabel("日");
JlblResult = new JLabel("计算结果");
//一个按钮
JbtnOK = new JButton("计算星期");
//二个面板
JPanel JpTop = new JPanel();
JPanel JpRs = new JPanel();
//增加下拉列表项
for (int i=1990; i<=2050; i++)
JcmbYear.addItem(new Integer(i));

for (int i=1; i<=12; i++)
JcmbMonth.addItem(new Integer(i));

for (int i=1; i<=31; i++)
JcmbDay.addItem(new Integer(i));
//设置下拉列表项为当前日期
JcmbYear.setSelectedItem(new Integer(calendar.get(Calendar.YEAR)));
//Month 值以 0 开始。 例如,0 代表一月。
JcmbMonth.setSelectedItem(new Integer(calendar.get(Calendar.MONTH) + 1));
JcmbDay.setSelectedItem(new Integer(calendar.get(Calendar.DATE)));
//上面的面板布局
JpTop.add(JcmbYear);
JpTop.add(JlblYear);
JpTop.add(JcmbMonth);
JpTop.add(JlblMonth);
JpTop.add(JcmbDay);
JpTop.add(JlblDay);
JpTop.add(JbtnOK);
//中部面板布局
JpRs.add(JlblResult);
//将面板增加到小应用程序
contentPane.add(JpTop, BorderLayout.NORTH);
contentPane.add(JpRs, BorderLayout.CENTER);
//注册监听器
JbtnOK.addActionListener(this);
}
//判断时间是否合法,传进年份,月份,返回当月的天数
public int isLeap(int y, int m)
{
//记得两个变量得初始化
boolean b = false;
int count = 0;

if (y%4 == 0 || (y%400 == 0 && y%100 != 0))
b = true;

switch (m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
count = 31;
break;
case 4:
case 6:
case 9:
case 11:
count = 30;
break;
case 2:
if(b)
count = 29;
else
count = 28;
break;
}
return count;
}

public void actionPerformed(ActionEvent e)
{
//获得年月日的整型值
int y = Integer.parseInt(JcmbYear.getSelectedItem().toString());
int m = Integer.parseInt(JcmbMonth.getSelectedItem().toString());
int d = Integer.parseInt(JcmbDay.getSelectedItem().toString());
//调用函数判断时间的合法性
if (d > isLeap(y, m))//如果不合法
{
JcmbMonth.setSelectedIndex(JcmbMonth.getSelectedIndex() + 1);//月份进一
JcmbDay.setSelectedIndex(0);//天数归一
}
//将下拉列表项写入时间对象
calendar.set(Calendar.YEAR, Integer.parseInt(JcmbYear.getSelectedItem().toString()));
//Month 值以 0 开始。 例如,0 代表一月。
calendar.set(Calendar.MONTH, Integer.parseInt(JcmbMonth.getSelectedItem().toString()) - 1);
calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(JcmbDay.getSelectedItem().toString()));
//获取星期几
w = calendar.get(Calendar.DAY_OF_WEEK);
//组合字符串
str = JcmbYear.getSelectedItem().toString() + JlblYear.getText();
str += JcmbMonth.getSelectedItem().toString() + JlblMonth.getText();
str += JcmbDay.getSelectedItem().toString() + JlblDay.getText();

switch (w)
{
case 1:
str += "是星期日";
break;
case 2:
str += "是星期一";
break;
case 3:
str += "是星期二";
break;
case 4:
str += "是星期三";
break;
case 5:
str += "是星期四";
break;
case 6:
str += "是星期五";
break;
case 7:
str += "是星期六";
break;
}
JlblResult.setText(str);
}
}


学好编程就能编出自己的未来! 加油!自信!努力!奋斗!
2006-03-17 14:28
laishang
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-3-2
收藏
得分:0 
我是个初学着,这个例子看不懂,有没有更好方法呢
2006-03-18 01:17
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
public abstract void add(int field,
int amount)
这个方法不是挺好的吗?
你先用构造一个Calendar的对象,
然后你可以很方便的对这个对象进行操作了,你可以改日期
你也可以加上几天,或减去几天从而得到后来的日期,
比如说你想在原来的基础上加上100天
Calendar c=Calendar.getInstance();
c.add(Calendar.DATE,100);
这个时候c所代表的对象就是100天后的时间了







你也可以减时间,对应的是负数就可以了,你可以查看100天前是什么日子
可以写样写c.add(Calendar.DATE,-100);
容易用吧



你也可以改任何地方
你可以改10个小时前
c.add(Calendar.HOUR,-10);
以此类推,好好掌握Calendar这个类,
它封装了很多很有用的方法。

可惜不是你,陪我到最后
2006-03-18 10:32
laishang
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-3-2
收藏
得分:0 

楼上说的这个方法是不错,可以实现我所要输入的任意日期的昨天与明天。但是,怎么实现这个任意输入的日期呢,请问用什么方法 好

2006-03-18 19:21
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
那就更容易了,可以用
set(int field, int value)
Sets the given calendar field to the given value.
void set(int year, int month, int date)
Sets the values for the calendar fields YEAR, MONTH, and DAY_OF_MONTH.
void set(int year, int month, int date, int hourOfDay, int minute)
Sets the values for the calendar fields YEAR, MONTH, DAY_OF_MONTH, HOUR_OF_DAY, and MINUTE.
void set(int year, int month, int date, int hourOfDay, int minute, int second)
Sets the values for the fields YEAR, MONTH, DAY_OF_MONTH, HOUR, MINUTE, and SECOND.
这里的set方法是重载的,你想用哪个都可以

可惜不是你,陪我到最后
2006-03-18 19:51
快速回复:怎样实现时间
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014388 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved