Страница 1 из 1

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

Добавлено: Сб май 12, 2012 17:57
Mellomann
Есть список дат в текстовом файле в формате DD.MM.YYYY, каждая с новой строки.
Из него нужно получить значения дней недели для каждой даты.

Как?

Добавлено: Сб май 12, 2012 19:46
Flasher
Смотря на чём. На WSH - просто. Только неясно, зачем это надо, и куда эти значения девать.

Добавлено: Сб май 12, 2012 19:55
Mellomann
Flasher
просто вывести на экран и, возможно, дописать в конец каждой строки через пробел (у меня каждая дата с новой строки)

если это осуществимо силами M$ Excel - такой вариант будет предпочтительнее

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

Добавлено: Сб май 12, 2012 21:21
Serge Yolkin
=ДЕНЬНЕД(...)

Добавлено: Сб май 12, 2012 22:36
Mellomann
Serge Yolkin писал(а):=ДЕНЬНЕД(...)
Оно самое, только пришлось дописать до вида =ДЕНЬНЕД(...;2). Ещё б умело оно буквенный вид давать - ваще супер было бы, но то уж не важно, задача и так решена...
Спаисибо!

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

Добавлено: Вс май 13, 2012 00:34
Mellomann
В самый раз!

Добавлено: Вс май 13, 2012 01:05
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

Добавлено: Пн май 14, 2012 09:47
Serge Yolkin
sa
С воскресенья надо начинать...

Добавлено: Пн май 14, 2012 10:03
sa
Serge Yolkin
Разве в России неделя начинается не в понедельник?

Добавлено: Пн май 14, 2012 13:44
Serge Yolkin
sa
Не знаю, в MSO'2010(RUS) ДЕНЬНЕД возвращает "1" для воскресенья.

Добавлено: Пн май 14, 2012 13:54
sa
Serge Yolkin
ДЕНЬНЕД(дата_в_числовом_формате;тип)
Для того и выбран тип 2.
Тип — это число, которое определяет тип возвращаемого значения.
1 или опущен Число от 1 (воскресенье) до 7 (суббота).
2 Число от 1 (понедельник) до 7 (воскресенье)
3 Число от 0 (понедельник) до 6 (воскресенье)

Добавлено: Пн май 14, 2012 16:32
Serge Yolkin
sa
Не знал.