Unity3D如何获取时间戳或北京时间

 更新时间:2020年10月28日 09:30:08   作者:代码妖  
这篇文章主要为大家详细介绍了Unity3D获取时间戳或北京时间的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Unity3D获取时间戳或北京时间的具体代码,供大家参考,具体内容如下

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

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

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

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;
  }
 }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • C#实现工厂方法模式

    C#实现工厂方法模式

    这篇文章介绍了C#实现工厂模式的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • C#实现将窗体固定在显示器的左上角且不能移动的方法

    C#实现将窗体固定在显示器的左上角且不能移动的方法

    这篇文章主要介绍了C#实现将窗体固定在显示器的左上角且不能移动的方法,涉及C#窗体固定操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • c# socket心跳超时检测的思路(适用于超大量TCP连接情况下)

    c# socket心跳超时检测的思路(适用于超大量TCP连接情况下)

    这篇文章主要介绍了c# socket心跳超时检测的思路(适用于超大量TCP连接情况下),帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#实现通过winmm.dll控制声音播放的方法

    C#实现通过winmm.dll控制声音播放的方法

    这篇文章主要介绍了C#实现通过winmm.dll控制声音播放的方法,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • C#中的时间显示格式(12小时制VS24小时制)

    C#中的时间显示格式(12小时制VS24小时制)

    这篇文章主要介绍了C#中的时间显示格式(12小时制VS24小时制),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • C#数据结构之堆栈(Stack)实例详解

    C#数据结构之堆栈(Stack)实例详解

    这篇文章主要介绍了C#数据结构之堆栈(Stack),结合实例形式较为详细的分析了堆栈的原理与C#实现堆栈功能的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • C#窗体通讯录系统的示例代码

    C#窗体通讯录系统的示例代码

    本文主要介绍了C#窗体通讯录系统的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 支持windows与linux的php计划任务的实现方法

    支持windows与linux的php计划任务的实现方法

    这篇文章主要介绍了支持windows与linux的php计划任务的实现方法,较为详细的讲述了php计划任务中涉及到的php程序实现方法、Windows计划任务实现方法等,需要的朋友可以参考下
    2014-11-11
  • C#实现判断操作系统是否为Win8以上版本

    C#实现判断操作系统是否为Win8以上版本

    这篇文章主要介绍了C#实现判断操作系统是否为Win8以上版本,本文讲解了利用C#获取OS的版本号、利用反射获取当前正在运行的程序的版本信息、 利用C#判断当前操作系统是否为Win8系统等内容,需要的朋友可以参考下
    2015-06-06
  • C#之WinForm WebBrowser实用技巧汇总

    C#之WinForm WebBrowser实用技巧汇总

    这篇文章主要介绍了C#之WinForm WebBrowser实用技巧汇总,包括常见的各种设置及信息获取等,需要的朋友可以参考下
    2014-08-08

最新评论