Advertisement

Unity3d 获取时间戳或获取北京时间

阅读量:

单机游戏因为没有服务器下发时间戳所以要自己获取,当然也可以用现成的时间API来获取。

如果获取本地时间,会导致玩家随意修改日期来达到数据更改,如每日奖品、每日奖励等等。

单机游戏本来就不要网络的,可是获取时间需要网络,这有点矛盾,有没有谁有更好的解决方案呢?

复制代码
 <span style="font-family:KaiTi_GB2312;font-size:14px;">using System;

    
 using System.Collections.Generic;
    
 using System.IO;
    
 using System.Net;
    
 using System.Text;
    
 using System.Text.RegularExpressions;
    
  
    
 namespace ConsoleApplication1
    
 {
    
  
    
     class Program
    
     {
    
     static void Main(string[] args)
    
     {
    
         Console.WriteLine( GetBeiJingTime());
    
         Console.ReadKey();
    
     }
    
  
    
     public static string GetBeiJingTime()
    
     {
    
         bool isget = false;
    
         string result = string.Empty;
    
         try
    
         {
    
             HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://open.baidu.com/special/time/");//百度北京时间地址
    
             req.Headers.Add("content", "text/html; charset=gbk");
    
             HttpWebResponse res = (HttpWebResponse)req.GetResponse();
    
             Stream stream = res.GetResponseStream();
    
             StreamReader sr = new StreamReader(stream, Encoding.GetEncoding("gbk"));
    
             string html = sr.ReadToEnd();
    
             Func<string,string> f1 = (p) =>{
    
                 Regex reg = new Regex("(?<=baidu_time\ ().*?(?=\ ))");
    
                 return reg.Matches(p)[0].Value;};
    
             string time = f1(html).Substring(0, 10);//这里是时间戳
    
             stream.Dispose();
    
             sr.Dispose();
    
             DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
    
             long lTime = long.Parse(time + "0000000");
    
             TimeSpan toNow = new TimeSpan(lTime);
    
             result = dtStart.Add(toNow).ToString("yyyyMMdd");
    
             isget = true;
    
         }
    
         catch (Exception)
    
         {
    
         }
    
         finally
    
         {
    
             if (!isget)result = "19700101";//如果没有网络就返回默认
    
         }
    
         return result;
    
     }
    
     }
    
  
    
 }</span>

全部评论 (0)

还没有任何评论哟~