一:字符串转换成时间及时间相减:
1:) SimpleDateFormat formatter = new SimpleDateFormat ("yyyy.MM.dd");
//假定像2002.07.04的是合法日期其他都非法。
String str="2002.07.04";
ParsePosition pos = new ParsePosition(0);
Date dt=formatter.parse(str,pos);
if(dt!=null)
{
//是合法日期
}
else
{
//非法日期
}
2:)两个日期相减
import java.util.*;
import java.text.*;
class a
{
public static void main(String[] args)
{
String s1 = "2003/08/15 17:15:30";
String s2 = "2002/09/14 14:18:37";
try{
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss");
ParsePosition pos = new ParsePosition(0);
ParsePosition pos1 = new ParsePosition(0);
Date dt1=formatter.parse(s1,pos);
Date dt2=formatter.parse(s2,pos1);
System.out.println("dt1="+dt1);
System.out.println("dt2="+dt2);
long l = dt1.getTime() - dt2.getTime();
System.out.println("Hello World!="+l);
}catch(Exception e){
System.out.println("exception"+e.toString());
}
}
}
3:)得到2个月后的日期:
import java.util.*;
import java.text.DateFormat;
public class test2
{
public static void main(String args[]) throws Exception
{
String date="2001/11/30";
DateFormat dateFormat =
DateFormat.getDateInstance(DateFormat.MEDIUM);
GregorianCalendar grc=new GregorianCalendar();
grc.setTime(new Date(date));
grc.add(GregorianCalendar.MONTH,2);
System.out.println("grc="+dateFormat.format(grc.getTime()));
}
}
二:计算日期间隔
public int getDays(Date sd,Date ed){
return (ed.getTime()-sd.getTime())/(3600*24*1000)
}
三: 日期加减
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
String str="20011230";
Date dt=sdf.parse(str,new ParsePosition(0));
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(dt);
rightNow.add(Calendar.DATE,2);//你要加减的日期
Date dt1=rightNow.getTime();
String reStr=sdf.format(dt1,"",new FieldPosition(0));
System.out.println(reStr);
四: 时间显示控制
第一种方式:
<html>
<head><title>取得系统时间</title></head>
<body>
<%java.util.Date date=new java.util.Date();%>
现在是:<%=date%>
</body>
</html>
运行结果:
现在是:Tue Jul 31 10:32:52 CST 2001
第二种方式:
<%@ page import="java.util.*, java.text.*" %>
<HTML>
<HEAD><TITLE>显示当前时间</TITLE></HEAD>
<BODY>
当前时间:
<%
Date now = new Date();
out.println(DateFormat.getTimeInstance().format(now));
%>
</BODY>
</HTML>
运行结果:
10:31:42 AM
第三种方式:
<%
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy年MM月dd日");
java.util.Date currentTime_1 = new java.util.Date();
out.print(formatter.format(currentTime_1));
%>
运行结果:
2001年07月31日
第四种方式:
<%
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy/MM/dd HH/mm/ss");
java.util.Date currentTime_1 = new java.util.Date();
out.print(formatter.format(currentTime_1));
%>
运行结果:
2001/07/31 10/32/52
第三四两种方式其实是一样的他可以产生千变万化的格式。
csbin 发表于:2006.03.04 16:58 ::分类: ( JAVA ) ::阅读:(158次) :: 评论 (1) :: 引用 (0)
dorado中的一段时间日期操作代码 [回复]
import java.util.*;
import java.text.*;
public void saveTrainSCH(ParameterSet parameters)
throws Exception {
Dataset dataset = getDataset("datasetTrainSCHSingle");
RecordIterator ri = dataset.recordIterator();
Date date, leaveDate, arriveDate;
String strDate, strTime;
// 定义日期格式
SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
while (ri.hasNext()) {
Record record = ri.nextRecord();
// 获得执行日期
date = record.getDate("SCHEDULE_DATE");
strDate = formatDate.format(date);
// 获得开始时间
strTime = record.getString("LEAVE_TIME");
System.out.println("*******************************************************************date"+strTime);
// 合并时间
strTime = strDate + " " + strTime;
System.out.println("*******************************************************************time"+strTime);
// 格式化合并时间
ParsePosition pos = new ParsePosition(0);
leaveDate = formatter.parse(strTime,pos);
record.setDate("LEAVE_PLANNED",leaveDate);
// 计算到达时间
int cycle = record.getInt("CYCLE");
GregorianCalendar grc=new GregorianCalendar();
grc.setTime(leaveDate);
grc.add(GregorianCalendar.MINUTE, cycle);
arriveDate = grc.getTime();
record.setDate("ARRIVE_PLANNED",arriveDate);
}
super.doUpdate(parameters);
}