获取网络时间、解析xml、截取string
创始人
2024-03-02 04:47:21

很多游戏具有每日登陆奖励功能,为防止玩家修改本地时间,需要读取服务器时间。下面分两部分介绍获取网络时间的两种方法,第一部分解析xml,第二部分截取string。

第一部分:通过国家授时中心链接获得的数据如下:

获取网络时间、解析xml、截取string

01

      

02

                -  

03

                -

04

                  2011  

05

                  7  

06

                  10  

07

                    

08

                  19  

09

                  45  

10

                  37  

11

                    

12

                   

13

                  ` 

然后解析xml获得当前时间,完整代码如下:

01

    using UnityEngine; 

02

    using System.Collections; 

03

    using System.Xml; 

04

05

    ///

 

06

    /// Get web time and parse xml 

07

    /// 获取网络时间/解析xml 

08

    ///  

09

    public class Test1 : MonoBehaviour 

10

    { 

11

        public string timeURL = "http://www.time.ac.cn/timeflash.asp?user=flash";//授时中心地址 

12

        // Use this for initialization 

13

        void Start() 

14

        { 

15

            StartCoroutine(GetTime()); 

16

        } 

17

18

        IEnumerator GetTime() 

19

        { 

20

            Debug.Log("Start get web time"); 

21

            WWW www = new WWW(timeURL); 

22

            while (!www.isDone) 

23

            { 

24

                Debug.Log("Getting web time"); 

25

                yield return www; 

26

                Debug.Log("Finish getting web time and whole xml is :   " + www.text); 

27

                ParseXml(www); 

28

            } 

29

        } 

30

31

        public void ParseXml(WWW www) 

32

        { 

33

            XmlDocument xmlDoc = new XmlDocument(); 

34

            xmlDoc.LoadXml(www.text); 

35

            XmlElement root = xmlDoc.DocumentElement; 

36

            XmlNodeList nodeList = root.SelectNodes("/ntsc/time"); 

37

            foreach (XmlElement xe in nodeList) 

38

            {  //Unity3D教程手册:www.unitymanual.com

39

                foreach (XmlElement x1 in xe.ChildNodes) 

40

                { 

41

                    if (x1.Name == "year") 

42

                        Debug.Log("Current year:      " + x1.InnerText); 

43

                    if (x1.Name == "month") 

44

                        Debug.Log("Current month:      " + x1.InnerText); 

45

                    if (x1.Name == "day") 

46

                        Debug.Log("Current day:      " + x1.InnerText); 

47

                    if (x1.Name == "hour") 

48

                        Debug.Log("Current hour:      " + x1.InnerText); 

49

                    if (x1.Name == "minite") 

50

                        Debug.Log("Current minite:      " + x1.InnerText); 

51

                    if (x1.Name == "second") 

52

                        Debug.Log("Current second:      " + x1.InnerText); 

53

                } 

54

            } 

55

        } 

56

    } 

获得的网络时间如下:

获取网络时间、解析xml、截取string

第二部分:通过北京时间链接地址获得的数据如下:

1

    t0=new Date().getTime(); nyear=2013; nmonth=6; nday=3; nwday=1; nhrs=16; nmin=57; nsec=29;

然后截取string获得网络时间,具体方法是截取“;”获得年月日...然后截取“=”获得对应的时间.

完整代码如下:

01

     using UnityEngine; 

02

    using System.Collections; 

03

04

    ///

 

05

    /// Get web time and split string 

06

    /// 获取网络时间/截取string 

07

    ///  

08

    public class Test2 : MonoBehaviour 

09

    { 

10

        public string timeURL = "http://www.beijing-time.org/time.asp";//北京时间地址 

11

        // Use this for initialization 

12

        void Start() 

13

        { 

14

            StartCoroutine(GetTime()); 

15

        } 

16

17

        IEnumerator GetTime() 

18

        { 

19

            Debug.Log("Start get web time"); 

20

            WWW www = new WWW(timeURL); 

21

            while (!www.isDone) 

22

            {  //Unity3D教程手册:www.unitymanual.com

23

                Debug.Log("Getting web time"); 

24

                yield return www; 

25

                Debug.Log("Finish getting web time and whole xml is :   " + www.text); 

26

                SplitString(www); 

27

            } 

28

        } 

29

30

        public void SplitString(WWW www) 

31

        { 

32

            string[] timeData = www.text.Split(';'); 

33

            for (int i = 0; i < timeData.Length; i++) 

34

            { 

35

                string[] exactTime = timeData[i].Split('='); 

36

                foreach (string temp in exactTime) 

37

                    Debug.Log(temp); 

38

            } 

39

        } 

40

    } 

获得的网络时间如下:

获取网络时间、解析xml、截取string

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...