@saylar
Разработчик Unity C#

Как определить серверное время?

Суть следующая, я сделал локальный сервер с помощью XAMPP и Apache, сделал небольшой скрипт на PHP, который показывает на страницы время, выглядит это вот так
5b19401e318a5949147323.png

Сам скрипт
<?php
	echo date("Y-m-d-H-i-s");
	?>


Я пытаюсь это получить в Юнити с помощью C#, скрипт все получает, то есть сайт и текст он видит.
Моя проблема в том, что не могу правильно форматировать запись, чтобы хоть как то с ней взаимодействовать.
Делаю это следующим образом
public class ServerTime : MonoBehaviour
{

    private string URL = "http://localhost/";

    // Use this for initialization
    void Awake ()
    {
        StartCoroutine(CheckTimeOnline());
    }

    private IEnumerator CheckTimeOnline()
    {
        DateTime timeNow = DateTime.Now;
        Debug.Log("ВРЕМЯ СЕЙЧАС: " + timeNow);

        WWW www = new WWW(URL);
        yield return www;


        if (www.error != null)
        {
            Debug.Log("Ошибка " + www.error);
            yield break;
        }
        TimeSpan ts;
        Debug.Log(www.text);
        string time = www.text;
        string format = "yyyy-MM-dd-HH-mm-ss";
        //var puk = DateTime.Parse(www.text, out timeNow);

        print(string.Format("Прошло: {0} дней, {1} часов, {2} минут, {3} секунд", timeNow.Day, timeNow.Hour, timeNow.Minute, timeNow.Second));




        if (PlayerPrefs.HasKey("TimeNow"))
        {
            ts = DateTime.ParseExact(time, format, CultureInfo.InvariantCulture) - DateTime.ParseExact(PlayerPrefs.GetString("TimeNow"), format, CultureInfo.InvariantCulture);
            //Debug.Log(string.Format("Прошло: " + ts.Days + ts.Hours + ts.Minutes + ts.Seconds));
            print(string.Format("Прошло: {0} дней, {1} часов, {2} минут, {3} секунд", timeNow.Day, timeNow.Hour, timeNow.Minute, timeNow.Second));
        }
        PlayerPrefs.SetString("TimeNow", www.text);
        Debug.Log(PlayerPrefs.GetString("TimeNow"));
    }
}


Сам Юнити выдает вот такую ошибку
5b194059f3797962913344.png
Я так понимаю, что вся проблема в представлении формата, но формат на сколько я понимаю, я написал верный, значит проблема в CultureInfo.InvariantCulture, но другого способа не знаю(((
Пожалуйста помогите))
  • Вопрос задан
  • 2089 просмотров
Решения вопроса 1
MrMureno
@MrMureno Куратор тега Unity
VR for all
www.text;
вот этот текст вы уверенны что у вас там 2017-06-07 прилетает. а не 2017-6-7. что собственно и вызовет несовпадение формата..
ну и вообще. сделайте время с сервера в UTC формате. Long переменная с количеством секунд..и перевидите стандартным методом без формата.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы