一、定义DateTime Message

参考文档:https://github.com/mgravell/protobuf-net/blob/master/src/Tools/bcl.proto

message DateTime
{optional sint64 value = 1; // the offset (in units of the selected scale) from 1970/01/01optional TimeSpanScale scale = 2 [default = DAYS]; // the scale of the timespanenum TimeSpanScale{DAYS = 0;HOURS = 1;MINUTES = 2;SECONDS = 3;MILLISECONDS = 4;TICKS = 5;MINMAX = 15; // dubious
  }
}

DateTime中包含两个属性:value,TimeSpanScale;
value为时间值,TimeSpanScale为时间模数:秒、微秒、毫微妙、Ticks;
Ticks是.net中的计时周期,参考:https://msdn.microsoft.com/zh-cn/library/system.datetime.ticks.aspx
1ticks=100毫微妙,10000ticks=1毫秒;

二、生成对应的Java类

protoc.exe -I=d:/tmp --java_out=d:/tmp d:/tmp/date_time.proto

三、解析C#DateTime为Java的java.util.Date

public class DateTimeUtil {private final static long TICKS_PER_MILLISECOND = 10000;/*** 将C#中的DateTime类型转为Java中的Date* * @param bclDateTime* @return*/public final static Date fromDateTimeToDate(DateTime dateTime) {long timeLong = dateTime.getValue();DateTime.TimeSpanScale timeSpanScale = dateTime.getScale();Calendar c = Calendar.getInstance();TimeZone.setDefault(TimeZone.getTimeZone("UTC"));switch (timeSpanScale) {case DAYS:// 24 * 60 * 60 * 1000c.setTimeInMillis(timeLong * 86400000);return c.getTime();case HOURS:// 60 * 60 * 1000c.setTimeInMillis(timeLong * 3600000);return c.getTime();case MINUTES:// 60 * 1000c.setTimeInMillis(timeLong * 60000);return c.getTime();case SECONDS:c.setTimeInMillis(timeLong * 1000);return c.getTime();case MILLISECONDS:c.setTimeInMillis(timeLong);return c.getTime();case TICKS:c.setTimeInMillis(timeLong / TICKS_PER_MILLISECOND);return c.getTime();default:c.setTimeInMillis(0L);return c.getTime();}}
}

参考文档:http://www.cnblogs.com/cuyt/p/6141723.html

转载于:https://www.cnblogs.com/liugh/p/6871531.html

Java如何转换protobuf-net中的bcl.DateTime对象相关推荐

  1. Java如何转换protobuf-net中的bcl.Decimal对象

    参考文章:http://www.cnblogs.com/cuyt/p/6141723.html 公司内部有些C#服务使用proto-net,引入了bcl.proto中的bcl.Decimal.bcl. ...

  2. java如何遍历字典_Java中如何遍历Map对象的4种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  3. java怎么转换HH24miss_oracle数据库中存的格式是YYYYMMDDHHmmss的字符串,怎么转换成YYYY-MM-DD HH:mm:ss...

    展开全部 1.创建测试表, create table test_date_conv(id varchar2(20),v_date varchar2(200)); 2.插入323131333532363 ...

  4. java double转换符_java中字符串怎么转换成double类型

    展开全部 public class Demo { public static void main(String[] args) { Demo demo = new Demo(); String str ...

  5. java 字符串转换成map_java中string类型转换成map

    背景:有时候string类型的数据取出来是个很标准的key.value形式,通过Gson的可以直接转成map 使用方式: Gson gson = new Gson(); Map map = new H ...

  6. java 米转换公里_java中把米换算成公里的代码是什么?

    展开全部 public static double geo_distance(double lat1, double lng1, double lat2, double lng2) { // eart ...

  7. java new string作用_java中直接new String对象?

    首先明确一点,在Java中==比较的是两个对象的地址,equals()比较的是两个对象的值,如果使用equals()来替换==,则两个输出结果都为true. 言归正传,为什么第一个返回为false? ...

  8. java 大小写转换函数_不使用Java中的任何库函数将大写转换为小写

    java 大小写转换函数 Given a string and we have to convert it from uppercase to lowercase. 给定一个字符串,我们必须将其从大写 ...

  9. java 图片合并成pdf_Java中PDF的转换(图片)与展示

    解决的问题 有些时候我们需要在项目中展示PDF,但是直接在浏览器中加入PDF展示的插件,存在兼容性问题,某些浏览器显示效果不理想,所以我们可以将PDF转为图片,然后已图片的方式展示,效果很好. 那么怎 ...

最新文章

  1. Dicom Test Files
  2. 开源大数据周刊-第34期
  3. Java提高—对象克隆(复制)/对象属性拷贝
  4. pytorch 训练过程学习率设置衰减
  5. ActiveRecord教程
  6. 用python计算列表元素之和_python实现计算列表元素之和
  7. C#实现二维码功能,winform 以及 asp.net均可以用
  8. AutoCAD2012从入门到精通中文视频教程 第16课 渐变填充,椭圆弧命令(个人收藏)
  9. 计算机 线性代数答案,2013-2014-1《线性代数》计算机B答案
  10. 一、Fiddler抓包工具 — Fiddler介绍与安装
  11. BoltDB学习笔记
  12. c语言中 小数取整函数,取整函数,截去小数取整函数
  13. ps、markman、cutterman下载地址
  14. 洁净室(区)浮游菌检测方法操作规程标准
  15. 复旦大学有计算机网络专业,复旦大学自考本科计算机网络专业介绍
  16. app上应用市场,被腾讯手机管家报病毒 a.gray.sexpay.m
  17. 哈工大计算机学院考研复试分数线2021,哈工大考研分数线2021什么时候出来?
  18. 我的酷派大神1S 9976t的刷机过程
  19. 关于将pem证书转为jellyfin可以使用的pkcs12证书
  20. Django计算机毕业设计爱宝贝影楼管理系统(程序+LW)Python

热门文章

  1. 使用帮助   history 用法   echo输出闪烁作业
  2. 动态规划(DP),压缩状态,插入字符构成回文字符串
  3. OAuth的机制原理讲解及开发流程
  4. 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计
  5. 使用cxf开发webservice应用时抛出异常
  6. 从TimeQuest角度看set_max_delay
  7. AD数据采集的“数字滤波”:10个“软件滤波程序”
  8. Ubuntu下安装DEB包时出现错误的解救方法
  9. ipython/jupyter notebook修改文件存储路径和浏览器
  10. opencv-python视频处理之白闪效果