今天做业务需要和第三方服务进行接口对接,对方的服务是c#写的因此Java中默认的时间戳即System.currentTimeMillis()对方识别不了,那么如何解决两种语言时间戳的计算方式差异呢?上网搜索了下unix时间戳的相关资料,Java的时间戳是从1970年0时0分0秒开始到现在的秒数而c#的时间戳是从0001 年 1 月 1 日午夜 12:00:00 开始,单位是微秒,详细的计算方式如下:
注意,Java中System.currentTimeMillis()获取的时间戳是13位而计算的时候只需要10位因此转换前需要再除以1000才能进行计算,详细代码如下:
/*
* java时间戳转换
*/
public String getUTCForCSharp(){
return String.valueOf(Long.parseLong(String.valueOf(System.currentTimeMillis()/1000))*10000000+Long.parseLong("621355968000000000")
}