C#同步网络时间和本地时间的代码

做工程过程,将做工程过程经常用的内容做个收藏,下面内容内容是关于 C#同步网络时间和本地时间的内容,希望对各位朋友有较大用途。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
using System.Runtime;

public class NetTime
{

    public DateTime GetBeijingTime()
    {

        DateTime dt;
        WebRequest wrt = null;
        WebResponse wrp = null;
        try
        {
            wrp = wrt.GetResponse();

            string html = string.Empty;
            using (Stream stream = wrp.GetResponseStream())
            {
                using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))
                {
                    html = sr.ReadToEnd();
                }
            }

            string[] tempArray = html.Split(‘;‘);
            for (int i = 0; i < tempArray.Length; i++)
            {
                tempArray[i] = tempArray[i].Replace("rn", "");
            }

            string year = tempArray[1].Split(‘=‘)[1];
            string month = tempArray[2].Split(‘=‘)[1];
            string day = tempArray[3].Split(‘=‘)[1];
            string hour = tempArray[5].Split(‘=‘)[1];
            string minite = tempArray[6].Split(‘=‘)[1];
            string second = tempArray[7].Split(‘=‘)[1];

            dt = DateTime.Parse(year + "-" + month + "-" + day + " " + hour + ":" + minite + ":" + second);
        }
        catch (WebException)
        {
            return DateTime.Parse("2011-1-1");
        }
        catch (Exception)
        {
            return DateTime.Parse("2011-1-1");
        }
        finally
        {
            if (wrp != null)
                wrp.Close();
            if (wrt != null)
                wrt.Abort();
        }
        return dt;

    }
}

获取网络时间,返回一个DateTime对象,然后传给设置系统时间的方法,修改系统时间。同步系统时间:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
using System.Runtime;

public class UpdateTime
{
    [DllImport("kernel32.dll")]
    private static extern bool SetLocalTime(ref SYSTEMTIME time);

    [StructLayout(LayoutKind.Sequential)]
    private struct SYSTEMTIME
    {
        public short year;
        public short month;
        public short dayOfWeek;
        public short day;
        public short hour;
        public short minute;
        public short second;
        public short milliseconds;
    }

    public static bool SetDate(DateTime dt)
    {
        SYSTEMTIME st;

        st.year = (short)dt.Year;
        st.month = (short)dt.Month;
        st.dayOfWeek = (short)dt.DayOfWeek;
        st.day = (short)dt.Day;
        st.hour = (short)dt.Hour;
        st.minute = (short)dt.Minute;
        st.second = (short)dt.Second;
        st.milliseconds = (short)dt.Millisecond;
        bool rt = SetLocalTime(ref st);
        return rt;
    }
}

两个方法分别写在了两个类里面,只需要在客户端实例化两个对象,然后依次调用其方法即可,简单实用。

原文地址:http://blog.51cto.com/14129393/2330222

时间: 2024-10-10 14:19:06

C#同步网络时间和本地时间的代码的相关文章

Python中如何把一个UTC时间转换为本地时间

需求: 将20141126010101格式UTC时间转换为本地时间. 在网上搜了好长时间都没有找到完美的解决方案.有的引用了第三方库,这就需要在现网安装第三方的软件.这个是万万不可的.因为真实环境不一定允许你随便使用root用户安装Python模块.最终找到了一个不用外部模块的完美解决方案,放在这里分享给大家. 1 #!/usr/bin/python 2 3 import os,sys,datetime,time 4 from datetime import datetime 5 import

Linux UTC时间与本地时间

因为维护的机器有欧洲,有越南,有泰国,有北美,有台湾,有大陆的机器. 但有个脚本需要告警, 告警的时间都要统一为大陆的时间. UTC时间与本地时间 UTC + 时区差 = 本地时间 时区差东为正,西为负.在此,把东八区时区差记为 +0800 UTC + (+0800) = 本地(北京)时间 统一时间, 将时间都转换为UTC,之后加8小时. date -u -d"+8 hour" now=`date -u -d"+8 hour" +'%Y-%m-%d %H:%M:%S

UTC、GTC时间和本地时间

1.问题 对于装有Windows和Linux系统的机器,进入Windows显示的时间和Linux不一致,Linux中的时间比Windows提前8个小时. 2.解决方法 修改/etc/default/rcS,设置不使用UTC时间,设置如下:UTC=no 3.解释 这个是一个关于时间的问题,我们就先来了解一下关于时间的概念 UTC(Universal Time Coordinated):协调世界时GMT(Greenwich Mean Time):格林威治时间本地时间(local time):全球二十

UTC时间转换为本地时间

UTC时间转换为本地时间DATEADD(hour, DATEDIFF(hour,GETUTCDATE(),GETDATE()), OrderDate) <'2015-02-02' DECLARE @LocalDate DATETIME, @UTCDate DATETIME, @LocalDate2 DATETIME SET @LocalDate = GETDATE() SET @UTCDate = DATEADD(hour, DATEDIFF(hour,GETDATE(),GETUTCDATE(

关于UTC时间和本地时间

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

UTC时间和本地时间的区别

在用AS3的Date时,年月日都有两个api,带UTC和不带UTC的,比如fullYear,fullYearUTC 输出看一下: var date:Date = new Date; trace(date.fullYear, date.month + 1, date.date, date.hours, date.minutes, date.milliseconds); trace(date.fullYearUTC, date.monthUTC + 1, date.dateUTC, date.hou

CloudStack中云主机的UTC时间转为本地时间

CloudStack项目中使用的时间是UTC时间,具体什么是UTC时间大家可以百度,但是我们需要的时间是正常的时间,所以在国泰君安开发测试云中,同步资源管理中虚拟机的同步管理,需要对虚拟机的时间格式化进行转换.工具类如下,关键是时间格式的问题,时间格式为yyyy-MM-dd'T'HH:mm:ss+SSSS. public static Date utc2LocalDate(String utcTime) {        String utcTimePatten = "yyyy-MM-dd'T'

在MySQL 5.7日志时间与本地时间不一致的问题

在MySQL 5.7.2 新增了 log_timestamps 这个参数,该参数主要是控制 error log.genera log,等等记录日志的显示时间参数. 在 5.7.2 之后改参数为默认 UTC 这样会导致日志中记录的时间比中国这边的慢,导致查看日志不方便.修改为 SYSTEM 就能解决问题 2个办法: 1:修改[ mysqld] log_timestamps = SYSTEM 重启 2:登入命令行界面: SHOW GLOBAL VARIABLES LIKE 'log_timestam

UTC时间与本地时间的相互转换

//把UTC时间转换成北京时间 DateTime now = DateTime.Parse(DateTime.UtcNow.ToString(), new CultureInfo("zh-CN"), System.Globalization.DateTimeStyles.AssumeUniversal); //把北京时间转换成UTC时间 DateTime nowUTC = now.ToUniversalTime();