Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2012, 20:34   #1
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию Альтернатива метода time() из php

Метод time() в php возвращает количество секунд прошедшее с 01.01.1970 00:00:00. Написал два метода:
Код:
private static DateTime Time(int tick)
{
     DateTime unix = new DateTime(1970, 1, 1, 0, 0, 0);
     return unix.AddSeconds(tick);
}

private static int Time(DateTime time)
{
     DateTime unix = new DateTime(1970, 1, 1, 0, 0, 0);
     TimeSpan ts = time - unix;

     return (int)ts.TotalSeconds;
}
первый метод целочисленное значение переводит в дату а второй наоборот, вот только разница получается ровно 4 часа.
Подскажите че за нах.
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Старый 11.11.2012, 21:32   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

А заем все это? для чего знать сколько секунд с 01.01.1970 прошло? дорогая сердцу дата?
eval вне форума Ответить с цитированием
Старый 11.11.2012, 21:51   #3
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию

Мне нужна альтернатива методу time() из php, а он как раз возвращает количество секунд с этой даты.
Моя программа будет работать в купе с сайтом на php, отсюда и гемор =(
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Старый 11.11.2012, 22:34   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Пока больше напоминает сагу о XYZ, нежели проблему.
eval вне форума Ответить с цитированием
Старый 11.11.2012, 22:55   #5
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию

проблема в потерянных 4-х часах
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Старый 11.11.2012, 23:51   #6
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

ну добавь 4 часа...
m0nax вне форума Ответить с цитированием
Старый 12.11.2012, 15:28   #7
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

ToFileTimeUtc переводит в utc формат
FromFileTimeUtc обратно

и я думаю 4 часа вылезло из-за часового пояса
Reskov вне форума Ответить с цитированием
Старый 12.11.2012, 17:43   #8
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Reskov Посмотреть сообщение
ToFileTimeUtc переводит в utc формат
FromFileTimeUtc обратно

и я думаю 4 часа вылезло из-за часового пояса
Преобразует значение текущего объекта DateTime во временную характеристику файла Windows. Временная характеристика файла Windows — это 64-битовое значение, представляющее количество 100-наносекундных интервалов, истекших с 00:00 1 января 1601 г. н. э.

Но я понял вашу мысль и вспомнил про DateTime.ToUniversalTime, но эффект был обратный, с ним разница 7 часов

Часовой пояс, как мне кажется, здесь не причем, т.к. у нас есть начальная дата и количество секунд. На выходе должны получить новую дату, т.е. начальную дату увеличили на количество секунд и ... где-то потеряли 14400 секунд =(
Как вы сформулируете вопрос так вам и ответят

Последний раз редактировалось xil; 12.11.2012 в 17:53.
xil вне форума Ответить с цитированием
Старый 12.11.2012, 19:44   #9
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

да сорри, вот еще попробуйте так
Код:
public static DateTime UnixTimeStampToDateTime( double unixTimeStamp )
{
    System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0);
    dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
    return dtDateTime;
}
Reskov вне форума Ответить с цитированием
Старый 12.11.2012, 20:23   #10
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Reskov Посмотреть сообщение
да сорри, вот еще попробуйте так
Код:
public static DateTime UnixTimeStampToDateTime( double unixTimeStamp )
{
    System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0);
    dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
    return dtDateTime;
}
все равно не хватает часа =(
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(ООП) Возможно ли взять им предыдущего метода в цепочке методов в php? AlienNation PHP 2 18.08.2012 14:56
Вызов метода из метода kuzjma PHP 8 10.12.2010 02:38
Run-time error 1004 для метода Unprotect при общем доступе Chelentano Microsoft Office Excel 2 11.08.2009 16:57
Альтернатива TImageList postal2 Компоненты Delphi 7 07.07.2009 22:05