c# 获取北京时间更新本地计算机

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

namespace pandian.cs
{
    public class UpdateDateTime
    {
        public static DateTime dt = DateTime.Now;
        public static void UpdateTime()
        {
            try
            {

                Uri uri = new Uri("http://www.beijing-time.org/time15.asp");
                System.Windows.Forms.WebBrowser browser = new System.Windows.Forms.WebBrowser();
                browser.DocumentCompleted += browser_DocumentCompleted;
                browser.Navigate(uri);
            }
            catch
            {

            }
        }

        static void browser_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
        {
            try
            {

                string html = (sender as System.Windows.Forms.WebBrowser).Document.Body.OuterHtml;
                if (html.Last() == ‘;‘)
                {
                    html = html.Remove(html.Length - 1);
                }
                string[] arr = html.Split(‘;‘);
                SystemTime st = new SystemTime();
                foreach (string str in arr)
                {

                    switch (str.Split(‘=‘)[0].Trim().ToLower())
                    {
                        case "nyear":
                            st.year = Convert.ToUInt16(str.Split(‘=‘)[1]);
                            break;
                        case "nmonth":
                            st.month = Convert.ToUInt16(str.Split(‘=‘)[1]);
                            break;
                        case "nday":
                            st.day = Convert.ToUInt16(str.Split(‘=‘)[1]);
                            break;
                        case "nhrs":
                            st.hour = Convert.ToUInt16(str.Split(‘=‘)[1]);
                            break;
                        case "nmin":
                            st.minute = Convert.ToUInt16(str.Split(‘=‘)[1]);
                            break;
                        case "nsec":
                            st.second = Convert.ToUInt16(str.Split(‘=‘)[1]);
                            break;
                    }
                }

                SetLocalTime(st);
            }
            catch
            {

            }

        }

        /// <summary>
        ///系统时间类
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public class SystemTime
        {
            public ushort year;
            public ushort month;
            public ushort dayofweek;
            public ushort day;
            public ushort hour;
            public ushort minute;
            public ushort second;
            public ushort milliseconds;
        }

        [DllImport("Kernel32.dll")]
        private static extern Boolean SetLocalTime([In, Out] SystemTime st);

    }
}
时间: 2024-10-18 16:59:12

c# 获取北京时间更新本地计算机的相关文章

atitit.获取北京时间CST 功能api总结 O7

atitit.获取北京时间CST 功能api总结 O7 1. 获取cst时间(北京时间)两布:1.抓取url timtstamp >>format 到cst 1 2. 设置本机时间  setSystime(date);:调用的命令行,只能支持windows和linux系统 2 3. 留意:  1582年10月5日-1582年10月14日.是不存在的.. 2 4. 克拉维斯委员会面临两个不同的问题, 太阳年不一致and闰年 3 5. 不同的国家不同样的的历法 3 6. 1582年10月15日之前

获取北京时间

方法一: [delphi] uses ComObj, DateUtils; function GetInternetTime: string; var XmlHttp: OleVariant; datetxt: string; DateLst: TStringList; mon: string; timeGMT, GetNetTime: TDateTime; s: string; begin XmlHttp := CreateOleObject('Microsoft.XMLHTTP'); Xml

logstash获取北京时间

由于logstash会自动将@timestamp时间转成UTC时间,网上搜了很多种方法无果后.只好从日志中提取年月日来进行按北京时间分表. 日志格式JSON: {"@timestamp":"2016-08-22T09:13:06.024Z",......} input {  redis {             host => "192.168.1.21"             port => "6379"  

Nodejs 获取北京时间

服务器部署在美国,时区不同.需要把系统时间转换成北京时间. 用 china-time 即可 npm i --save china-time 使用 const chinaTime = require('china-time'); console.log(chinaTime()); // 2018-02-07T04:38:00.000Z console.log(chinaTime().getTime()); // 1517978280000 console.log(chinaTime('YYYY-M

Delphi 获取北京时间(通过百度和timedate网站)

方法一: [delphi] view plaincopyprint? uses ComObj, DateUtils; function GetInternetTime: string; var XmlHttp: OleVariant; datetxt: string; DateLst: TStringList; mon: string; timeGMT, GetNetTime: TDateTime; s: string; begin XmlHttp := CreateOleObject('Mic

获取网络上的北京时间,如果大于设定的过期时间就...

设置一个过期时间 ,定义时间变量dd,dd获取网络上的北京时间,如果获取失败,就获取计算机当前时间,再比对dd与过期时间,如果dd大于过期时间,就执行... // 比对固定时间,看是否超时. private void CompareTime() { try { dd = GetBeijingTime(); i = DateTime.Compare(dd, Convert.ToDateTime("2013-1-1 00:00:00")); if (i < 0) { dd = Dat

Unity 获取服务器时间 HTTP请求方式

在写每日签到的时候,我居然使用的是本地时间...被项目经理笑哭了...., 如果你在写单机游戏,没有游戏服务器,但又不想使用本地时间,就可以采用下面方法. 方法总结: 1. 使用HTTP请求获取服务器时间,不能实时获取服务器时间这样高频率的 2. 使用socket可以实时获取服务器时间 3. 使用C#自带API获取sql server 标准北京时间(=.=还没有找到这个API) 第HTTP方式: 代码: using UnityEngine; using System.Collections; u

unix时间戳(unix timestamp)与北京时间的互转方法

1.在linux bash下北京时间与unix时间戳互转: 获取unix timestamp: 命令:date "+%s" 输出:1372654714 获取北京时间: 命令:date '+%Y-%m-%d %H:%M:%S' 输出:2013-07-01 12:55:56 unix timestamp转北京时间: 命令:date [email protected] '+%Y-%m-%d %H:%M:%S' 输出:2013-07-01 12:58:34 北京时间转unix timestam

java 获取服务器时间同步本地计算机时间

http://hi.baidu.com/captives/item/25c8b80170a9b0ccf45ba6f8 -------------------------------------------------------- package dtm.tools;            import java.io.BufferedInputStream;      import java.io.BufferedReader;      import java.io.IOException;