【C#公共帮助类】DateTimeHelper设置电脑本地时间,实际开发很需要

关于本文档的说明

  本文档主要为了解决实际开发当中,服务器和客户端电脑时间不能相等的问题,纯干货,实际项目这种时间不同步的情况很多很多,时间不相等,到时候把本地的数据提交给服务器,服务器看实际上传时间和我写入数据库时间相差好大,影响实际业务操作和判断业务准确性,所以需要设置设备或者电脑的时间来为上传提供准确的时间节点。

  欢迎传播分享,必须保持原作者的信息,但禁止将该文档直接用于商业盈利。

  本人自从几年前走上编程之路,一直致力于收集和总结出好用的框架和通用类库,不管是微软自己的还是第三方的只要实际项目中好用且可以解决实际问题那都会收集好,编写好文章和别人一起分享,这样自己学到了,别人也能学到知识,当今社会很需要知识的搬运工。

Email:[email protected]

  本文章地址:http://www.cnblogs.com/wohexiaocai/p/5721906.html

1.基本介绍

实际开发中,我们需要测试电脑时间不是准确时间情况下对业务的影响就需要用到这个类,帮我们设置电脑正确的时间点。

一般我们是设置用户的电脑时间,不是服务器的时间哦,服务器的时间可以用NTP来进行统一设置的,科普:http://baike.baidu.com/link?url=Bq6U-qi2UFJSqMXaBJXNLemE69CEfpfrJmAx4HflvHgRIjP1v6hI2YZPyfabcgnjGNXP-yykPprAPtgRU3czna

2.如何获取正确的时间

要想获取到正确的时间,一般将我们服务器的时间获取到就可以,服务器的时间一般都是联网的,时间比较准确,实际项目中我们就是通过调用服务器的接口获取到当前时间的,这个并不难

 

 1 #region public static string GetResponse(string url)
 2         /// <summary>
 3         /// 获取一个网页
 4         /// </summary>
 5         /// <param name="url">地址</param>
 6         /// <returns>字符串返回值</returns>
 7         public static string GetResponse(string url)
 8         {
 9             string result = null;
10             WebResponse webResponse = null;
11             StreamReader streamReader = null;
12             try
13             {
14                 HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
15                 httpWebRequest.Method = "GET";
16                 webResponse = httpWebRequest.GetResponse();
17                 streamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8);
18                 result = streamReader.ReadToEnd();
19             }
20             catch
21             {
22                 // handle error
23             }
24             finally
25             {
26                 if (streamReader != null)
27                 {
28                     streamReader.Close();
29                 }
30                 if (webResponse != null)
31                 {
32                     webResponse.Close();
33                 }
34             }
35             return result;
36         }
37         #endregion

获取时间

3.设置电脑时间

得到时间就需要进行设置了,一般Windows系统都是通过DOS命令来设置电脑的时间所以这里也用了C#的DOS来设置

3.1 设置日期

有时候只需要设置电脑的年月日

public static void SetLocalDate(int year, int month, int day)

3.2 设置时间

有时候只需要设置电脑的时分秒

public static void SetLocalTime(int hour, int min, int sec)

3.3 设置年月日时分秒

有时候只需要设置电脑的时分秒

public static void SetLocalDateTime(DateTime time)

4.实战效果

经过win7、XP、windows server等测试后可以正常设置电脑时间,请大家可以正常使用,不实战怎么敢拿出来直接用呢?

5.源码下载

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Diagnostics;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7
 8 namespace ConsoleApplication1
 9 {
10     public class DateTimeHelper
11     {
12         /// <summary>
13         /// 设置本地电脑的年月日
14         /// </summary>
15         /// <param name="year"></param>
16         /// <param name="month"></param>
17         /// <param name="day"></param>
18         public static void SetLocalDate(int year, int month, int day)
19         {
20             //实例一个Process类,启动一个独立进程
21             Process p = new Process();
22             //Process类有一个StartInfo属性
23             //设定程序名
24             p.StartInfo.FileName = "cmd.exe";
25             //设定程式执行参数 “/C”表示执行完命令后马上退出
26             p.StartInfo.Arguments = string.Format("/c date {0}-{1}-{2}", year, month, day);
27             //关闭Shell的使用
28             p.StartInfo.UseShellExecute = false;
29             //重定向标准输入
30             p.StartInfo.RedirectStandardInput = true;
31             p.StartInfo.RedirectStandardOutput = true;
32             //重定向错误输出
33             p.StartInfo.RedirectStandardError = true;
34             //设置不显示doc窗口
35             p.StartInfo.CreateNoWindow = true;
36             //启动
37             p.Start();
38             //从输出流取得命令执行结果
39             p.StandardOutput.ReadToEnd();
40         }
41
42         /// <summary>
43         /// 设置本机电脑的时分秒
44         /// </summary>
45         /// <param name="hour"></param>
46         /// <param name="min"></param>
47         /// <param name="sec"></param>
48         public static void SetLocalTime(int hour, int min, int sec)
49         {
50             //实例一个Process类,启动一个独立进程
51             Process p = new Process();
52             //Process类有一个StartInfo属性
53             //设定程序名
54             p.StartInfo.FileName = "cmd.exe";
55             //设定程式执行参数 “/C”表示执行完命令后马上退出
56             p.StartInfo.Arguments = string.Format("/c time {0}:{1}:{2}", hour, min, sec);
57             //关闭Shell的使用
58             p.StartInfo.UseShellExecute = false;
59             //重定向标准输入
60             p.StartInfo.RedirectStandardInput = true;
61             p.StartInfo.RedirectStandardOutput = true;
62             //重定向错误输出
63             p.StartInfo.RedirectStandardError = true;
64             //设置不显示doc窗口
65             p.StartInfo.CreateNoWindow = true;
66             //启动
67             p.Start();
68             //从输出流取得命令执行结果
69             p.StandardOutput.ReadToEnd();
70         }
71
72         /// <summary>
73         /// 设置本机电脑的年月日和时分秒
74         /// </summary>
75         /// <param name="time"></param>
76         public static void SetLocalDateTime(DateTime time)
77         {
78             SetLocalDate(time.Year, time.Month, time.Day);
79             SetLocalTime(time.Hour, time.Minute, time.Second);
80         }
81     }
82 }
时间: 2024-10-24 06:21:37

【C#公共帮助类】DateTimeHelper设置电脑本地时间,实际开发很需要的相关文章

iOS dateformatter设置GMT格式时间--iOS开发系列---项目中成长的知识四

今天在项目中开始接手客户端的签名这个模块,签名这个会在项目结束过后再单独写一下自己的心得! 今天讲讲在签名的过程中我们需要向服务器传送一个Date值,格式要求是格林威治时间,也就是GMT时间! 格式要求是 22 Oct 2015 10:20:35 GMT 而我通过[NSDate Date]获取到的格式是2015-10-22 10:20:35 所以就上网搜寻答案 说的是通过[NSDate Date]这个获取到的时间就是GMT地区的,所以我就觉得是转格式的地方出问题了 但是经过一番尝试后,无论是转格

php获取时间问题,用默认配置读到本地时间。。。。。

用date获取到时间有8小时时差 因为php用date获取到的是格林威治时区的时间,而大陆时间和格林威治时间有8个小时时差,所以.... 修改:网上有各种修改方式: 比如:在程序中添加时间的初始化的语句的 即:"date_default_timezone_set("Asia/Shanghai"); "这个可以由程序员任意设置. 时区标识符: 大陆内地可用的值是:PRC,Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为中国

关于UTC时间和本地时间

收藏了个类Publics  可以实现本地时间和UTC时间的转换 UCT时间=本地时间-8    本地时间比UTC时间快8小时 element-ui的日期选择器上  选择的时间显示的是本地时间   但实际值是UTC时间传到后端 这时候 时间的类型是UTC时间 在实体中  要调用转成UTC时间的方法(自动计算时差) 从实体中获取数据的时候  时间是datetime格式   所以 调用 时间刻度不变  把时间类型转成UTC时间 这时候时间的类型是UTC类型了   但时间的值还是从数据库中取出来的值 

【C#公共帮助类】JsonHelper 操作帮助类, 以后再也不用满地找Json了,拿来直接用

 四个主要操作类:JsonConverter .JsonHelper .JsonSplit .AjaxResult 一.JsonConverter: 自定义查询对象转换动态类.object动态类转换json包.json转换object动态类.DataReader转换为Json.DataSet转换为Json.DataTable转成Json.Datatable转换为Json .格式化字符型日期型布尔型.过滤特殊字符等 using System; using System.Collections.Ge

【C#公共帮助类】给大家分享一些加密算法 (DES、HashCode、RSA、AES等)

AES 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.AES先进加密算法是一向被认为牢不可破的加密算法,针对这项加密算法的攻击是异常复杂的,事实上想要完全破解AES花费的时间要以数十亿年计,极大的保证了数据的安全性. 这里有两个加密.解密方法: 一种是带密钥的加密:一种是动态加密,就是不需要密钥,密钥被动态生成

同一局域网下手机打开电脑本地网站

同一局域网下手机打开电脑本地网站 一.    打开IIS Win+R --------------打开‘运行’ 输入cmd,按回车----------跳到dos视窗操作界面(小黑窗) 停止IIS(iisreset/stop ) 启动IIS(iisreset/start) 二.    增加网站,及填写和选择你的网站名字,路径,以及端口和IP (http://jingyan.baidu.com/article/72ee561a42bd44e16038df6e.html) 1.首先到控制面板里面安装好

Util应用程序框架公共操作类(六):验证扩展

前面介绍了仓储的基本操作,下面准备开始扩展查询,在扩展查询之前,首先要增加两个公共操作类,一个是经常要用到的验证方法,另一个是Lambda表达式的操作类. 很多时候,我们会判断一个对象是否为null,由于null是一个不能接受的值,它会导致“未将对象引用设置到对象的实例”的严重错误,所以当检测到null值时一般直接抛出ArgumentNullException异常. public void Test( string name ) { if( name == null ) throw new Ar

如何设置电脑的固定IP地址

大家在上网时电脑的IP地址往往都是自动选择的,但在局域网内有时会方便共享文件和监控流量等操作时需要固定的IP地址.下面将简单介绍如何手设置电脑的固定IP地址. 百度经验:jingyan.baidu.com 方法/步骤 1 单击电脑网络连接图标,打开网络和共享中心 步骤阅读 2 点击本地连接 步骤阅读 3 点击详细信息,即可看到IP地址.子网掩码.默认网关.DNS服务器信息 步骤阅读 步骤阅读 4 再点击本地连接状态下的属性 步骤阅读 5 找到Internet 协议版本 4(TCP/IPv4) 用

Util应用程序框架公共操作类(五):异常公共操作类

任何系统都需要处理错误,本文介绍的异常公共操作类,用于对业务上的错误进行简单支持. 对于刚刚接触.Net的新手,碰到错误的时候,一般喜欢通过返回bool值的方式指示是否执行成功. public bool 方法名() { //执行代码,成功返回true,否则返回false } 不过上面的方法有一个问题是,无法知道确切的错误原因,所以需要添加一个out参数来返回错误消息. public bool 方法名( out string errorMessage ) { //执行代码,成功返回true,否则返