先来个名词解释:
Epoch time:指从1970年1月1日零时起到现在为止的"second(秒) 数".
注意我给"second(秒) 数"加了引号,是因为在不一样的项目中,计量单位可能是不同的,需要仔细的阅读相关文档.比如Gtalk Api的Gmail Notifications文档中,所使用的date数为从1970年1月1日零时起到现在为止的"millisecond(毫秒) 数".
C#的Datetime.ticks:指从0001年1月1日零时起到现在为止的one ten-millionth of a second数量,或者one hundred nanoseconds of a second数量,也就是"千万分之一秒"的数量.
java的Date.getTime():这个方法返回目标时间到1970年1月1日零时为止的"millisecond(毫秒) 数".

然后来做个转换:
1 second(秒)=1000 millisecond(毫秒)=10 x 100 0000 one ten-millionth of a second(千万分之一秒)

好了,接下来是我们的java转换函数

public static long GetTicks(String epochStr)
 {
  //convert the target-epoch time to a well-format string
   String date = new java.text.SimpleDateFormat("yyyy/MM/dd/HH/mm/ss").format(new Date (Long.parseLong(epochStr)));
   String[] ds=date.split("/");
    
   //start of the ticks time
  Calendar calStart=Calendar.getInstance();
  calStart.set(1, 1, 3, 0, 0, 0);
  
  //the target time
  Calendar calEnd=Calendar.getInstance();
  calEnd.set(Integer.parseInt(ds[0]) ,Integer.parseInt(ds[1]),Integer.parseInt(ds[2]),Integer.parseInt(ds[3]),Integer.parseInt(ds[4]),Integer.parseInt(ds[5]) );
  
  //epoch time of the ticks-start time
  long epochStart=calStart.getTime().getTime();
  //epoch time of the target time
  long epochEnd=calEnd.getTime().getTime();
  
  //get the sum of epoch time, from the target time to the ticks-start time
   long all=epochEnd-epochStart;   
   //convert epoch time to ticks time
      long ticks=( (all/1000) * 1000000) * 10;
    
      return ticks;
 }

用图来说明:

|       |         |
目标时间  1970年    0001年

我是分别取得目标时间和0001年到1970年的"millisecond(毫秒) 数",然后加在一起,这样就得到了目标时间到0001年的"millisecond(毫秒) 数",然后把这个数字换算成"千万分之一秒"的数量,得到ticks数.
或许你会发现,为什么0001年的计算从1月3号起,不是应该1月1号吗.这个问题我也很奇怪,因为我发现如果从1月1号起,时间上就总是差着两天,这原因等待高手来解决 :)

转载于:https://www.cnblogs.com/notus/archive/2008/07/16/1244428.html

java的Date.getTime()转换成C#的Datetime.ticks相关推荐

  1. java实现c#的datetime.ticks_java的Date.getTime()转换成C#的Datetime.ticks | 学步园

    先来个名词解释: Epoch time:指从1970年1月1日零时起到现在为止的"second(秒) 数". 注意我给"second(秒) 数"加了引号,是因为 ...

  2. java如何将string转换成date_java如何将string类型转为date类型?Java的转型方法

    学习Java的小伙伴们有时候可能会碰到这么一些烦恼,写日期的时候代码一直报错,原因就是日期一直写的是字符串,在项目里就不能写成字符串了,必须把字符串类型转成日期类型,那Java中如何将字符串Strin ...

  3. date oracle 显示毫秒_Oracle中根据Date型转换成Java对应的long型毫秒数

    在Java开发中,很多时候我们为了方便会直接使用long型来保存时间,可以通过System.currentTimeMillis()或者是java.util.Date.getTime()来获取:取值为当 ...

  4. java中把map转换成list

    private String key;     private String value;          //把map转换成list的公共方法     public static List map ...

  5. JS将/Date(1446704778000)/转换成string

    JS将/Date(1446704778000)/转换成str: var dateStr = eval(ele.add_time.replace(/\/Date\((\d+)\)\//gi, " ...

  6. Java中将inputstream输入流转换成byte[]字节数组

    Java中将inputstream输入流转换成byte[]字节数组 Java中的I/O机制都是基于数据流进行输入和输出的,将流转换成字节数组保存下来是数据流传输必不可少的一部分.转换的代码如下(在具体 ...

  7. java浮点数化为整数_[Java教程]javascript浮点数转换成整数三种方法

    [Java教程]javascript浮点数转换成整数三种方法 0 2014-06-24 04:00:27 将浮点数转换成整数方法有很多,分享三种常用方法. Summary 暂时我就想到3个方法而已.如 ...

  8. java+小时转为分钟_用java将12862秒转换成 N 小时,K 分钟,M 秒

    用java将12862秒转换成 N 小时,K 分钟,M 秒以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用java将1 ...

  9. java怎么把字符串转换成字符数组

    此博客用于个人编程学习记录. 文章内容来自于: java怎么把字符串转换成字符数组-Java基础-PHP中文网https://www.php.cn/java/base/435415.html java ...

  10. java 父类强制转换为子类_[java]Java中父类强制转换成子类的原则

    Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用. 例: public class Test { public static void main(Str ...

最新文章

  1. 【Java 线程的深入研究3】最简单实例说明wait、notify、notifyAll的使用方法
  2. 解决ajax劫持,Ajax实现检测网站劫持的方法
  3. linux创建mysql视图,MySQL视图入门浅析
  4. 模拟实现STL中map和set容器
  5. “睡服”面试官系列第一篇之let和const命令(建议收藏学习)
  6. 现代软件工程 作业 结对编程 模板
  7. java pk .net_Java与.Net大PK
  8. PHP CURL 异步测试
  9. bgb邻居关系建立模型_知识图谱上的双塔召回:阿里的IntentGC模型
  10. java键盘钩子_java 写的低级鼠标键盘钩子示例
  11. 如何批量生成Code 128条形码
  12. 快手、抖音、微视类短视频APP源码开发SDK接入教程,7步就能搞定短视频APP开发制作
  13. CUBE+STM32F103 入门
  14. (详细)Windows10系统自动修复方法
  15. Rust本地化实现 —— fluent
  16. Android WebView 调用相机、相册,压缩图片后上传
  17. netbeans配置JAVA环境_NetBeans IDE 8.0.1 安装说明
  18. 语法错误 : 缺少“;”(在“*”的前面)_学科教学不能缺少生本意识
  19. 感动13亿中国人的芭蕾舞小女孩
  20. Stata绘图相关问题

热门文章

  1. 在主函数中输入10个等长的字符串。用另一函数对他们排序。
  2. LeetCode : Intersection of Two Linked Lists
  3. struts2 国际化 cookie保存语言, 下次访问时显示当前设置的语言
  4. Oracle版本区别[转载]
  5. java day24【Stream流、方法引用】
  6. tensorflow分布式运行
  7. vim修改tab默认4个空格
  8. selenium遇到的问题记录
  9. 【彩彩只能变身队】(迟到的)团队介绍
  10. 解决webStorm没有cesium代码自动提示的方法