一直再用,但是一直比较模糊,这里稍微看看。
一.简述
首先,时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术一种变种的应用。
定义:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
时间戳分为两种
- 自建时间戳:此类时间戳是通过时间接收设备(如GPS,CDMA,北斗卫星)来获取时间到时间戳服务器上,并通过时间戳服务器签发时间戳证书。此种时间戳可用来企业内部责任认定,在法庭认证时并不具备法律效力。因其在通过时间接收设备接收时间时存在被篡改的可能,故此不能做为法律依据。
- 具有法律的效力的时间戳:它是由我国中科院国家授时中心与北京联合信任技术服务有限公司负责建设的我国第三方可信时间戳认证服务。由国家授时中心负责时间的授时与守时监测。因其守时监测功能而保障时间戳证书中的时间的准确性和不被篡改。获取时间戳平台有“大众版权保护平台”[1] ,可与我国中科院国家授时中心时间同步。
(这是从百度上烤下来的 有点扯远了0.0)
函数中:
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中(比如Linux系统),也在许多其他操作系统中被广泛采用。
php中获取时间戳的方法是:time();Date();
Linux中获取时间戳的方法是:date +%s
Linux中将时间戳转换为日期: date -d “@”
二.应用
首先说下UNIX时间戳的转化方法
/**
*
* @param dataFormat 格式
* @param timeStamp UNIX时间戳
* @return
*/
public static String formatData(String dataFormat, long timeStamp) {
if (timeStamp == 0) {
return "";
}
timeStamp = timeStamp * 1000;//转换为普通时间
String result = "";
SimpleDateFormat format = new SimpleDateFormat(dataFormat);
result = format.format(new Date(timeStamp));
return result;
}
然后直接给出一篇代码吧没什么可说的
package viewpage.yundong.com.timestamp;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private long timecurrentTimeMillis;
private long timeGetTime;
private long timeSeconds;
private long timeMillis;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
/**
* 以下是获取现在的系统时间戳的几种方法,实际开发中可能需要服务端返回所需的时间戳 ;
* 但是实际开发中服务端返回的时间戳可能是字符串等,需要转换为long等,可采用如下方法直接转换:
* Integer.parseInt(String s) Long.parseLong(String s)
* Float.parseFloat(String s) Double.parseDouble(String s)
*/
timecurrentTimeMillis = System.currentTimeMillis();
timeGetTime = new Date().getTime();
timeSeconds = System.currentTimeMillis();
timeMillis = Calendar.getInstance().getTimeInMillis();
/**
* 通过打印信息可以看到,这几种获取系统时间的时间戳几乎是一样的。
*/
Log.d("zhongyao", "timecurrentTimeMillis" + timecurrentTimeMillis
+ "@@@" + "timeGetTime" + timeGetTime + "@@@timeSeconds"
+ timeSeconds + "timeMillis" + timeMillis);
/**
* 时间戳转换成具体时间形式
*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日",
Locale.getDefault());
String time1 = sdf.format(timeSeconds);
String time2 = sdf.format(timeGetTime);
Log.d("zhongyao", timeSeconds + " 现在的时间1->:" + time1);
Log.d("zhongyao", timeGetTime + " 现在的时间2-->:" + time2);
SimpleDateFormat sdfTwo = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒E",
Locale.getDefault());
String time11 = sdfTwo.format(timeSeconds);
String time22 = sdfTwo.format(timeGetTime);
Log.d("zhongyao", timeSeconds + " 现在的时间11->:" + time11);
Log.d("zhongyao", timeGetTime + " 现在的时间22-->:" + time22);
/**
* 而最常用的:
* 由于服务端返回的一般是UNIX时间戳,所以需要把UNIX时间戳timeStamp转换成固定格式的字符串 这里的第二个参数是UNIX时间戳
*/
String result = formatData("yyyy-MM-dd", 1488511851);
Log.d("zhongyao", result);
}
/**
*
* @param dataFormat 格式
* @param timeStamp UNIX时间戳
* @return
*/
public static String formatData(String dataFormat, long timeStamp) {
if (timeStamp == 0) {
return "";
}
timeStamp = timeStamp * 1000;//转换为普通时间
String result = "";
SimpleDateFormat format = new SimpleDateFormat(dataFormat);
result = format.format(new Date(timeStamp));
return result;
}
}