Java如何转换protobuf-net中的bcl.DateTime对象
一、定义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对象相关推荐
- Java如何转换protobuf-net中的bcl.Decimal对象
参考文章:http://www.cnblogs.com/cuyt/p/6141723.html 公司内部有些C#服务使用proto-net,引入了bcl.proto中的bcl.Decimal.bcl. ...
- java如何遍历字典_Java中如何遍历Map对象的4种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- 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 ...
- java double转换符_java中字符串怎么转换成double类型
展开全部 public class Demo { public static void main(String[] args) { Demo demo = new Demo(); String str ...
- java 字符串转换成map_java中string类型转换成map
背景:有时候string类型的数据取出来是个很标准的key.value形式,通过Gson的可以直接转成map 使用方式: Gson gson = new Gson(); Map map = new H ...
- java 米转换公里_java中把米换算成公里的代码是什么?
展开全部 public static double geo_distance(double lat1, double lng1, double lat2, double lng2) { // eart ...
- java new string作用_java中直接new String对象?
首先明确一点,在Java中==比较的是两个对象的地址,equals()比较的是两个对象的值,如果使用equals()来替换==,则两个输出结果都为true. 言归正传,为什么第一个返回为false? ...
- java 大小写转换函数_不使用Java中的任何库函数将大写转换为小写
java 大小写转换函数 Given a string and we have to convert it from uppercase to lowercase. 给定一个字符串,我们必须将其从大写 ...
- java 图片合并成pdf_Java中PDF的转换(图片)与展示
解决的问题 有些时候我们需要在项目中展示PDF,但是直接在浏览器中加入PDF展示的插件,存在兼容性问题,某些浏览器显示效果不理想,所以我们可以将PDF转为图片,然后已图片的方式展示,效果很好. 那么怎 ...
最新文章
- Dicom Test Files
- 开源大数据周刊-第34期
- Java提高—对象克隆(复制)/对象属性拷贝
- pytorch 训练过程学习率设置衰减
- ActiveRecord教程
- 用python计算列表元素之和_python实现计算列表元素之和
- C#实现二维码功能,winform 以及 asp.net均可以用
- AutoCAD2012从入门到精通中文视频教程 第16课 渐变填充,椭圆弧命令(个人收藏)
- 计算机 线性代数答案,2013-2014-1《线性代数》计算机B答案
- 一、Fiddler抓包工具 — Fiddler介绍与安装
- BoltDB学习笔记
- c语言中 小数取整函数,取整函数,截去小数取整函数
- ps、markman、cutterman下载地址
- 洁净室(区)浮游菌检测方法操作规程标准
- 复旦大学有计算机网络专业,复旦大学自考本科计算机网络专业介绍
- app上应用市场,被腾讯手机管家报病毒 a.gray.sexpay.m
- 哈工大计算机学院考研复试分数线2021,哈工大考研分数线2021什么时候出来?
- 我的酷派大神1S 9976t的刷机过程
- 关于将pem证书转为jellyfin可以使用的pkcs12证书
- Django计算机毕业设计爱宝贝影楼管理系统(程序+LW)Python
热门文章
- 使用帮助 history 用法 echo输出闪烁作业
- 动态规划(DP),压缩状态,插入字符构成回文字符串
- OAuth的机制原理讲解及开发流程
- 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计
- 使用cxf开发webservice应用时抛出异常
- 从TimeQuest角度看set_max_delay
- AD数据采集的“数字滤波”:10个“软件滤波程序”
- Ubuntu下安装DEB包时出现错误的解救方法
- ipython/jupyter notebook修改文件存储路径和浏览器
- opencv-python视频处理之白闪效果