前后端时间戳转化

时间戳(time-stamp)是指格林威治时间从1970年1月1日(00:00:00 GMT)到现在。也就是1970年以前的timestamp为负数,
1970年1月1日 00:00:00 UTC + 00:00(UTC是世界统一协调时)当前时间就是相对于epoch time的秒数。
在python中,时间戳是10位有效数字

1. python中的时间戳

python时间戳是10位
时间有三种展现方式:时间戳,时间元组,格式化的时间
下面分别分python,javascript和java,简单总结一下各自时间戳和日期的格式,以及转化
import datetime
import time

now = datetime.datetime.now() #结果:2018-10-17 22:06:59.558291

int(time.time()) #time.time()结果:1539785014.581079

#字符串格式化时间转换时间戳
str_time = '2018-1-17' 
print(time.mktime(time.strptime(str_time,'%Y-%m-%d'))) 

#时间戳转换成格式化的时间字符串
gsh_time= time.time()
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(gsh_time))) #结果:2018-10-17 22:11:53

2. javascript中的时间戳

js中获取的时间戳是13位
#精确到秒
var timestamp1 = Date.parse( new Date());
#结果:1539785792000 

#精确到毫秒
var timestamp2 = ( new Date()).valueOf();
var timestamp3 = new Date().getTime();
#结果:1539785928024
#时间戳转化为日期
function timestamp2Date(timestamp) {
  var date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
  var Y = date.getFullYear() + '-';
  var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
  var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
  var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
  var m = (date.getMinutes() <10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
  var s = (date.getSeconds() <10 ? '0' + date.getSeconds() : date.getSeconds());
  return Y+M+D+h+m+s;
};
timestamp2Date(1539785928024)
#结果:"2018-10-17 22:18:48"

#日期转化为时间戳
function Date2timestamp(str) {
  var date = new Date(str);
  // 有三种方式获取
  return date.getTime();
}
Date2timestamp("2018-10-17 22:18:48")

#结果:1539785928000
python和js的时间戳在传递中需要转化,如果只是精确到秒,那么只需要js传过来的数据在python中/1000就可以了,前后端都使用时间戳传递日期时间。

3.java中的时间戳

java中的时间戳也是13位,而且如果是日期时间类型,在实体类的定义中,最好定义成private Timestamp loginTime;保持与数据库的一致
#获取时间戳的三种方式
精确到毫秒
System.out.println(System.currentTimeMillis());
System.out.println(Calendar.getInstance().getTimeInMillis());
System.out.println(new Date().getTime());
#13位时间戳传给前端只需要/1000        
 
 
#获取日期        
System.out.println(new Timestamp(System.currentTimeMillis()));// new Date()为获取当前系统时间
 
 #结果:2018-10-17 22:33:16.521
        
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
System.out.println(df.format(new Date()));
#结果:2018-10-17 22:11:53

#时间戳转换成日期时间
long timeStamp = System.currentTimeMillis();
String sd = df.format(new Date(timeStamp));
System.out.println(sd);//打印出你要的时间

#结果:2018-10-17 22:39:31

你可能感兴趣的:(前后端时间戳转化)