时间戳的转换与jsp页面的显示

写项目发现数据库存时间 存的都是一串数字 所以上网百度了一番 知道了是时间戳 然后再百度如何显示 各种方法
在这我列出我自己搜索出的资料 给大家参考一下

这里我先演示如何将一段时间字符串转换成时间戳

  1. 字符串转long型时间戳

	/**
	 * 将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型必须除于一千再转换 这里就不再演示了

  1. 接下来将时间戳转换成String型时间 有两种方法

第一种

@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类型就只要用第三步就行啦

  1. 这里介绍下可能要用到的日期戳

  • 获取当前日期戳
/**
	 * 获取当前时间戳
	 */
	@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天了

大概就这么多了,可能有跟简便的方法 欢迎一起交流 蟹蟹

如果有侵权,请联系我删除

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值