如何在 Windows Mobile 程序中获得包含 Millisecond 的 DateTime
2008-01-15 21:41
375 查看
在我们编写的 Windows CE 或 Windows Mobile 应用程序中,常常通过调用 System.DateTime.Now 来获得设备的当前时间。我们可以利用设备的当前时间给变量和控件赋值,或者生成单据号和主键字段值等。不过,细心的你可能已经发现,在 Windows Mobile 应用程序中每次调用 System.DateTime.Now 获取到的 DateTime,它的 Millisecond 值始终为 0。这难道是 .NET Compact Framework 的 bug?事实上就算你用 Native 代码调用 GetLocalTime 或 GetSystemTime API 函数,得到的时间的毫秒也是 0。
那么,有没有办法在 Windows Mobile 程序中获得包含 Millisecond 的 DateTime 呢?办法是有的,不过没有直接的,需要自己编写一点代码来实现。OpenNETCF 顾问 Chris Tacke 就介绍了一种方法,利用 System.Environment.TickCount 获取系统启动后经过的毫秒数,再整除以 1000 得到一个一秒以内的时间差,之后可以利用这个时间差来计算出当前 DateTime 时间的 Millisecond 值。
详细的原理阐述和具体的代码实现就不再这里粘贴了,需要的朋友可以阅读《Getting a Millisecond-Resolution DateTime under Windows CE》一文,文章还附带了打包的示例代码和PDF格式提供下载。
在分布式环境下,一般会选择 GUID 或精确到毫秒的时间(DateTime)作为在设备上新增数据的唯一标识,以避免数据提交到中央服务器后出现主键冲突。关于这个话题可以阅读我N久前写的《在PPC上用时间做唯一编号遇到的问题及其解决方法》。
那么,有没有办法在 Windows Mobile 程序中获得包含 Millisecond 的 DateTime 呢?办法是有的,不过没有直接的,需要自己编写一点代码来实现。OpenNETCF 顾问 Chris Tacke 就介绍了一种方法,利用 System.Environment.TickCount 获取系统启动后经过的毫秒数,再整除以 1000 得到一个一秒以内的时间差,之后可以利用这个时间差来计算出当前 DateTime 时间的 Millisecond 值。
详细的原理阐述和具体的代码实现就不再这里粘贴了,需要的朋友可以阅读《Getting a Millisecond-Resolution DateTime under Windows CE》一文,文章还附带了打包的示例代码和PDF格式提供下载。
在分布式环境下,一般会选择 GUID 或精确到毫秒的时间(DateTime)作为在设备上新增数据的唯一标识,以避免数据提交到中央服务器后出现主键冲突。关于这个话题可以阅读我N久前写的《在PPC上用时间做唯一编号遇到的问题及其解决方法》。
相关文章推荐
- 如何在 Windows Mobile 程序中获得包含 Millisecond 的 DateTime
- 如何获得整个程序的运行时间
- [导入]如何部署包含水晶报表的程序
- linux如何从程序中获得/设置环境变量
- 在Linux程序中如何获得本进程的可执行文件的全路径?
- sql server中datetime字段只取年月日如2006-04-21,默认值如何设置?getdate()得到的是包含时分秒的时间。
- 如何使编译的ROM能使所有程序获得root权限执行
- Linux下静态库_库的基本概念;如何生成静态库动态库;nm查看库中包含那些函数、ar生成静态库,查看库中包含那些.o文件、ldd查看程序依赖的.so文件;gcc/g++与库相关的参数-L,-l,-f
- 在Windows Mobile和Wince(Windows Embedded CE)下如何使用.NET Compact Framework开发进程管理程序
- queryRuner如何获得bean对象,当这个bean对象中包含其他对象的时候
- 【问题】如何获得报表中某对象的值与程序进行交互?
- 如何看待程序获得数据?
- 转载---如何部署包含水晶报表的程序
- 在VC中如何获得程序的当前路径?
- Windows Mobile 中如何执行其他可执行程序 如何打开指定文件夹(转)
- 如何部署包含水晶报表的程序
- Linux下静态库_库的基本概念;如何生成静态库动态库;nm查看库中包含那些函数、ar生成静态库,查看库中包含那些.o文件、ldd查看程序依赖的.so文件;gcc/g++与库相关的参数-L,-l,-f
- 一个包含中英文的字符串如何获得它的自然长度
- 如何在程序中获得应用程序的包名以及其他
- Java程序、JSP以及JavaScript中如何判断某个字符串是否包含某个子串