要想显示出各种各样的日期格式。
首先,在数据库mysql中不能把日期字段定义成datetime类型,要保存为varchar类型,否则不管你存入什么格式,取出来都是01-09-09的样式。
其次,在向数据库存数据的java中,可以利用法二存入各种格式的simpledatetime类型数据。
最后,在取日期的jsp文件中,取出合适记录,以getstring方式取出来就可以了,就是你想要的格式。
或者是用getDate取出然后用SimpleDateFormat去格式化成你希望的格式!
法一:利用javascript
<script language=JavaScript>
today=new Date();
function initArray(){
this.length=initArray.arguments.length
for(var i=0;i<this.length;i++)
this[i+1]=initArray.arguments[i] }
var d=new initArray(
"星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六");
document.write(
"<font color=##000000 style='font-size:9pt;font-family: 幼圆'> ",
today.getYear(),"年",
today.getMonth()+1,"月",
today.getDate(),"日 ",
d[today.getDay()+1],
"</font>" );
</script>
法二:JSP代码
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*"%>
<%! public String getDayWeek(int n)
{ String week[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return week[n];
}
%>
<HTML>
<BODY bgcolor=cyan><Font size=1>
<% Calendar calendar=Calendar.getInstance(); //创建一个日历对象。
calendar.setTime(new Date());//用当前时间初始化日历时间。
String 年=String.valueOf(calendar.get(Calendar.YEAR)),
月=String.valueOf(calendar.get(Calendar.MONTH)+1),
日=String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)),
星期=getDayWeek(calendar.get(Calendar.DAY_OF_WEEK)-1);
int hour=calendar.get(Calendar.HOUR_OF_DAY),
minute=calendar.get(Calendar.MINUTE),
second=calendar.get(Calendar.SECOND);
%>
<P>现在的时间是<BR>
<%=年%>年
<%=月%>月
<%=日%>日
<%=星期%>
<BR>
<%=hour%>点
<%=minute%>分
<%=second%>秒
<% if(日.equals("26"))
{out.print("<BR><H2>今天是病毒容易发作的日子!</H2>");
}
if(hour>=22)
{ out.print("<BR><H2>现在时间很晚了注意休息</H2>");
}
%>
</FONT>
</BODY>
</HTML>
法三:SimpleDateFormat用法
public class SimpleDateFormat extends DateFormat
SimpleDateFormat 是一个以特别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。
SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 DateFormat 中的 getTimeInstance、 getDateInstance 或 getDateTimeInstance 创建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期/时间格式化程序。可以根据需要用 applyPattern 方法修改格式化方式。
SimpleDateFormat函数的继承关系:
java.lang.Object
|
+----java.text.Format
|
+----java.text.DateFormat
|
+----java.text.SimpleDateFormat
下面是个小例子:
import java.text.*;
import java.util.Date;
public class FormatDateTime {
public static void main(String[] args) {
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
SimpleDateFormat myFmt4=new SimpleDateFormat(
"一年中的第 D 天一年中第w个星期一月中第W个星期在一天中k时 z时区");
Date now=new Date();
System.out.println(myFmt.format(now));
System.out.println(myFmt1.format(now));
System.out.println(myFmt2.format(now));
System.out.println(myFmt3.format(now));
System.out.println(myFmt4.format(now));
System.out.println(now.toGMTString());
System.out.println(now.toLocaleString());
System.out.println(now.toString());
}
}
效果:
2004年12月16日 17时24分27秒
04/12/16 17:24
2004-12-16 17:24:27
2004 年12月16日 17时24分27秒 星期四
一年中的第 351 天 一年中第51个星期 一月中第3个星期 在一天中17时 CST时区
16 Dec 2004 09:24:27 GMT
2004-12-16 17:24:27
Thu Dec 16 17:24:27 CST 2004
----------------------
在java中取得当前的系统时间并且转化成自己想要的格式
需要引进 java.util.Calendar 和 java.text.SimpleDateFormat 这两个类:
Calendar rightNow = Calendar.getInstance();
SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddhhmmss");
String sysDatetime = fmt.format(rightNow.getTime());
可以对 new SimpleDateFormat("yyyyMMddhhmmss") 中引号里面的格式进行编辑,转换成自己相要的格式,比如还可以转
换成 new SimpleDateFormat("yyyy/MM/dd hh:mm:ss ") 的格式
java 日期处理(转)
1.ResultSet.getDate() 从数据库中取出日期为java.sql.Date,它的父类就是java.util.Date
示例:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
System.out.println(simpleDateFormat.format(new Date()));
输出结果为:2010年04月01日
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月d日");
System.out.println(simpleDateFormat.format(new Date()));
输出结果为:2010年04月1日
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM");
System.out.println(simpleDateFormat.format(new Date()));
输出结果为:04;
注:SimpleDateFormat中的格式类型有多种,根据提供的类型返回指定类型的值(String类型),可参考API
2.Calendar类是一个抽象类,获取实例方法:Calendar rightNow = Calendar.getInstance();
示例:
Calendar calendar= Calendar.getInstance();
calendar.setTime(new Date());
calendar.get(Calendar.MONTH);
注:这种返回返回的值是int类型。
3.Timestamp用来处理数据库时间问题
示例:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
System.out.println(simpleDateFormat.format(ResultSet.getDate(""));
结果输出为:00:00:00
修改为:
System.out.println(simpleDateFormat.format(ResultSet.getTimestamp(""));
就是显示正常的时分秒了!
4.与日期和时间相关的类
java.lang.System/ System.currentTimeMillis();
java.util.Date
java.util.Calendar
java.util.GregorianCalendar
java.util.TimeZone
java.text.DateFormat
数据库相关的三个类,是java.util.Date的子类
java.sql.Date
java.sql.Time
java.sql.Timestamp
5.把字符串转换成日期或时间类型
1)使用Timestamp和字符串的yyyy-mm-dd hh:mm:ss.fffffffff 格式
示例:
//使用 yyyy-mm-dd hh:mm:ss.fffffffff 格式的 String 对象
String s = "2010-04-01 12:12:12.0";
Timestamp timestamp = Timestamp.valueOf(s);
2)TimeZone、Calendar
示例:
Calendar hkCalendar = new GregorianCalendar(TimeZone.getTimeZone("Hongkong"));
hkCalendar.get(Calendar.DAY_OF_WEEK);
System.out.println(hkCalendar.get(Calendar.DAY_OF_WEEK));
for (String id : TimeZone.getAvailableIDs()) {
System.out.println(id);//这里出现的值都可以出现在TimeZone.getTimeZone("id")中的id中
}