Получение значения дня недели из имеющейся даты

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Ответить
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Получение значения дня недели из имеющейся даты

Сообщение Mellomann »

Есть список дат в текстовом файле в формате DD.MM.YYYY, каждая с новой строки.
Из него нужно получить значения дней недели для каждой даты.

Как?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Смотря на чём. На WSH - просто. Только неясно, зачем это надо, и куда эти значения девать.
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

Flasher
просто вывести на экран и, возможно, дописать в конец каждой строки через пробел (у меня каждая дата с новой строки)

если это осуществимо силами M$ Excel - такой вариант будет предпочтительнее
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Mellomann писал(а):просто вывести на экран и, возможно, дописать в конец каждой строки через пробел (у меня каждая дата с новой строки)
т.е. так?:
07
02
11
05
Так а зачем это нужно? И дописывают не в окне, а в файле, надо полагать?
Mellomann писал(а):если это осуществимо силами M$ Excel - такой вариант будет предпочтительнее
В Exel есть формулы с датами, наверняка можно. Но у меня под рукой мелкомягкого офиса нет, чтобы проверить.
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

=ДЕНЬНЕД(...)
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

Serge Yolkin писал(а):=ДЕНЬНЕД(...)
Оно самое, только пришлось дописать до вида =ДЕНЬНЕД(...;2). Ещё б умело оно буквенный вид давать - ваще супер было бы, но то уж не важно, задача и так решена...
Спаисибо!
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Mellomann писал(а):Ещё б умело оно буквенный вид давать
=ВЫБОР(ДЕНЬНЕД(…;2);"Понедельник";"Вторник";"Среда";"Четверг";"Пятница";"Суббота";"Воскресенье")
Аватара пользователя
Mellomann
Сообщения: 709
Зарегистрирован: Пн сен 07, 2009 00:44

Сообщение Mellomann »

В самый раз!
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Код: Выделить всё

@echo off &setlocal enableextensions &chcp 866 >nul
::	Параметры: "файл с датами.txt"

>"%temp%\Weekday.vbs" echo WScript.Echo WeekDayName(Weekday(WScript.Arguments(0)),True)

for /f "usebackq" %%d in ("%~1") do (
	for /f %%a in ('cscript /nologo "%temp%\Weekday.vbs" %%d') do call :chcp %%d %%a
)
move /y "%temp%\Weekday.tmp" "%~1"
goto :eof

:chcp
chcp 1251 >nul
echo %1 %2>>"%temp%\Weekday.tmp"
chcp 866 >nul
goto :eof
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

sa
С воскресенья надо начинать...
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Serge Yolkin
Разве в России неделя начинается не в понедельник?
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

sa
Не знаю, в MSO'2010(RUS) ДЕНЬНЕД возвращает "1" для воскресенья.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Serge Yolkin
ДЕНЬНЕД(дата_в_числовом_формате;тип)
Для того и выбран тип 2.
Тип — это число, которое определяет тип возвращаемого значения.
1 или опущен Число от 1 (воскресенье) до 7 (суббота).
2 Число от 1 (понедельник) до 7 (воскресенье)
3 Число от 0 (понедельник) до 6 (воскресенье)
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

sa
Не знал.
Ответить