写项目发现数据库存时间 存的都是一串数字 所以上网百度了一番 知道了是时间戳 然后再百度如何显示 各种方法
在这我列出我自己搜索出的资料 给大家参考一下
这里我先演示如何将一段时间字符串转换成时间戳
/**
* 将String转换为时间戳
*/
@Test
public void testGet() {
String date = "1970/01/19 04:38:33";
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss" );//注意字符串的格式要与这里的相同
Date dt;
try {
dt = sdf.parse(date);
long ts = dt.getTime();
System.out.println("date: " + date + " 转换后的时间:" + ts);
} catch (Exception e) {
e.printStackTrace();
}
}
如果想把long类型转换成int型必须除于一千再转换 这里就不再演示了
第一种
@Test
public void timestamp(){
// long stamp = 1543113000l;//直接是时间戳
long stamp = System.currentTimeMillis();//获取当前时间戳,也可以是你自已给的一个随机的或是别人给你的时间戳(一定是long型的数据)
System.out.println(stamp);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//这个是你要转成后的时间的格式
String sd = sdf.format(new Date(stamp)); // 时间戳转换成时间
System.out.println(sd);//打印出你要的时间
}
这里注意一下这里的时间戳转换成日期是long型 如果使用int型的话时间错误 如果非要用int就乘1000再转换long型吧
@Test
public void timestamp(){
int time= 1543113000;
long timeStamp=time*1000l;
System.out.println(stamp);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//这个是你要转成后的时间的格式
String sd = sdf.format(new Date(stamp)); // 时间戳转换成时间
System.out.println(sd);//打印出你要的时间
}
第二种
@Test
public void testgetdate() {
//将时间戳转换成日期
Calendar c = Calendar.getInstance();
int seconds = 1543113000;// 数据库中提取的数据 这是1
long millions = new Long(seconds).longValue() * 1000; //这是2
// long millions=1543113000000l;如果用long型就去掉上两行代码 这是3
System.out.println(millions);
c.setTimeInMillis(millions);
System.out.println(c.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = sdf.format(c.getTime());
System.out.println(seconds+"转换成日期为:"+dateString);
// System.out.println(millions+"转换成日期为:"+dateString);
}
这个方法跟上面的差不多 但是用的东西好像不太一样如果用的是int就用1和2步,如果用的是long类型就只要用第三步就行啦
- 获取当前日期戳
/**
* 获取当前时间戳
*/
@Test
public void testGetToday() {
long s = System.currentTimeMillis();
int time = (int) (System.currentTimeMillis()/1000);
System.out.println("当前时间long型的时间戳"+s);
System.out.println("当前时间int型的时间戳"+time);
}
- 获取当前凌晨日期戳
/**
* 获取当日 00:00:00的时间戳
*/
@Test
public void testGetTodayTheZero() {
long current =System.currentTimeMillis();
long s = current - (current + TimeZone.getDefault().getRawOffset())% (1000*3600*24);
int time=(int) (s/1000);
System.out.println("当日long型的 00:00:00时间戳"+s);
System.out.println("当日int型的 00:00:00时间戳"+time);
}
- 获取昨日凌晨日期戳
/**
* 获取昨日 00:00:00的时间戳
*/
@Test
public void testGetTodayTheZero() {
long current = System.currentTimeMillis();
long s = current - ((current + TimeZone.getDefault().getRawOffset())% (1000*3600*24)+24*60*60*1000);
int zero=(int) (s/1000);
System.out.println("昨日long型的 00:00:00时间戳"+s);
System.out.println("昨日int型的 00:00:00时间戳"+zero);
}
至此后台时间戳的转换就到这里 下面来介绍页面的转换
页面很容易也很简单 只需要几行代码
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<jsp:useBean id="creationTime" class="java.util.Date"/>
<jsp:setProperty name="creationTime" property="time" value="${时间戳}"/>
<fmt:formatDate value="${creationTime}" pattern="yyyy-MM-dd HH:mm:ss" />
这里有个小问题 如果你是int型的时间戳 需要把时间戳乘以1000 才会显示正确的数据 在这上面困了1天了
大概就这么多了,可能有跟简便的方法 欢迎一起交流 蟹蟹
如果有侵权,请联系我删除