Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
facepalm_by
0 / 0 / 1
Регистрация: 25.12.2013
Сообщений: 7
1

Округление времени. Задать количество секунд для округления

01.01.2014, 21:12. Просмотров 2931. Ответов 2
Метки нет (Все метки)

С новым годом! Ребята нужна помощь, функция округления времени.

функция (d,i)

где d - дата и время
а i - количество секунд для округления

пример d='2014-01-01 20:21:39'

если i=60 -> '2014-01-01 20:21:00'
если i=300-> '2014-01-01 20:20:00'
если i=900-> '2014-01-01 20:15:00'
если i=3600-> '2014-01-01 20:00:00'

т.е. округление до целой величины времени в меньшую сторону
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2014, 21:12
Ответы с готовыми решениями:

Округление времени
Моя программа выводит время в таком формате 05:27:57.7520000 ,хочу чтоб...

Перевод времени из секунд в обычное представление
Доброго времени суток.Столкнулся с проблемой перевода времени из секунд в...

Как вырезать или задать интервал времени в datetime
Как вырезать или задать интервал времени в datetime? Например мне нужно делать...

Вычислить количество секунд с начала суток
Дано кол-во часов, минут, секунд с начала суток. Вычислить кол-во секунд с...

Прибавить к времени определенное количество секунд
У меня в *.txt файле хранятся секунды. Хотел сделать, чтобы скрипт определял...

2
rattrapper
foo();
864 / 568 / 221
Регистрация: 03.07.2013
Сообщений: 1,547
Записей в блоге: 2
02.01.2014, 01:31 2
Лучший ответ Сообщение было отмечено facepalm_by как решение

Решение

facepalm_by, долго я не мог додумать, но вот, вроде все правильно
C#
1
2
3
4
5
6
static DateTime Round(this DateTime dt, long sec)
{
    long delta = sec * 10000000;
    long temp = dt.Ticks % delta;
    return dt.AddTicks(temp < delta / 2 ? -temp : delta - temp);
}
1
facepalm_by
0 / 0 / 1
Регистрация: 25.12.2013
Сообщений: 7
02.01.2014, 12:22  [ТС] 3
rattrapper, спасибо большое, но не подходит.
Округление времени происходит на ~30 секунде
т.е. Round('2014-01-02 10:21:28', 60) -> '2014-01-02 10:21:00' - верно
Round('2014-01-02 10:21:31', 60) -> '2014-01-02 10:22:00' - не верно, надо 10:21:00

Round('2014-01-02 10:21:59', 60) -> '2014-01-02 10:21:00' - так надо

Добавлено через 1 час 16 минут
Нашел, что мне подошло.
C#
1
2
3
4
public static DateTime Floor(this DateTime date, TimeSpan span) {
        long ticks = (date.Ticks / span.Ticks);
        return new DateTime(ticks * span.Ticks);
    }
Тема закрыта.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2014, 12:22

Перевод времени из формата 01:01:01 в общее количество секунд (3661)
при вводе числа в формате времени 01:01:01 в textbox, мне нужно получить...

Вернуть количество секунд, прошедших с заданной даты и времени
Напишите функцию, которая принимает в качестве входных данных строку, даты и...

SnagIt: как задать, чтобы он переходил в режим захвата через нужное количество секунд?
Нужно успеть раскрыть ниспадающее меню у какой-либо проги и это запечатлеть с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru