Дата в Unix. Неправильно считает.

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
Приветствую.
У меня есть определенная дата, например (15.11.1991) и мне нужно перевести её в Unix.
Делаю так:
Код:
Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1991, 11, 15))).TotalSeconds;
return unixTimestamp;
Мне возвращается число: 7426*****
А должно, судя по _epochconverter.com: 6901*****, потому что именно с этим число приходит верный результат.

Что не так в коде? Ботинки не кидать - в C# не шарю :-)

Перед тем, как публиковать тему - гуглил, но так особо и не разобрался с предложенными примерами, в силу отсутствия нужных знаний.

По-сути, задача простая: узнать возраст по дате рождения.
Планировал делать так: получать Unix текущего времени и Unix даты рождения, вычитаем и преобразуем в года. Все застопорилось именно из-за того, что не могу получить "правильный" Unix с даты рождения :(

Буду благодарен за любую помощь.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
return ((int)new DateTime(1991, 11, 15).ToUniversalTime().Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc)).TotalSeconds);
 
  • Спасибо
Реакции: ibred

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
return ((int)new DateTime(1991, 11, 15).ToUniversalTime().Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc)).TotalSeconds);
Спасибо большое!)
А, вот в чем разница. Он считал секунды с даты (15.11.1991) до текущей, а не с 1970 до 1991. Получается мне и мой вариант подходит, просто нужно по-другому считать.
Разобрался :-)

А можно ли как-то объединить?:
С#
Код:
Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1991, 11, 15))).TotalSeconds;
return unixTimestamp;
и JavaScript
Код:
Math.floor ({-Variable.bdate-} / 31556926) + " возраст ";
Чтобы, собственно, в C# можно было подставить переменную с датой, а он посчитал Unix и преобразовал в возраст.
А то вроде такая простая задача, а 2 кубика.))
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
Или хотя бы подскажите, как в С# коде (который выше) вставить переменную вместо фиксированной даты 1991, 11, 15 :-)
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
var datestr = "1991.11.15";
return (int)DateTime.Parse(datestr).ToUniversalTime().Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc)).TotalSeconds;
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
var datestr = "1991.11.15";
return (int)DateTime.Parse(datestr).ToUniversalTime().Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc)).TotalSeconds;
Не работает.(
Код:
var datestr = project.Variables["table_vozrast"].Value;
Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(datestr))).TotalSeconds;
return unixTimestamp;
2015-05-29_2-48-19.jpg
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Код:
var datestr = project.Variables["table_vozrast"].Value;
DateTime date = Convert.ToDateTime(datestr);
int unix = (Int32)(date.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
return unix;
 
  • Спасибо
Реакции: Gunjubasik

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)