Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/64: Рейтинг темы: голосов - 64, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
1

Получить новую дату вычитанием из заданной даты одного дня

18.07.2014, 11:50. Показов 12041. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
на вход скрипту подается значение переменой $dates. дата может быть введена любая, по желанию пользователя.

нужно вычесть из этой даты один день. пробую следующий вариант, но он терпит неудачу:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
function test_func {
param(
[parameter(
          mandatory=$true,
          position = 0
          )
]
          [datetime]$dates
     )
$dates.adddays(-1)
}
выдает совершенно неверную дату
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2014, 11:50
Ответы с готовыми решениями:

Получить название дня недели заданной даты
Здравствуйте! Хотелось бы узнать как можно получить название дня недели в c# ? Например дату можно...

Получить номер дня и месяца и определить дату следующего дня (считая, что год невисокосный)
Всем привет! Буду очень благодарен если поможете составить программу в PascalABC. Условие звучит...

Вычитание из текущей даты одного дня
Как выполнить вычитание даты на один? Если выполнить: dateTimePicker1.Value.Date.AddDays(-1)то...

По заданной дате определить дату предыдущего дня
По дате d(день) m(месяц) и y(год) определить дату d1(день) m1(месяц) и y1(год) предшествующего...

9
88 / 88 / 37
Регистрация: 28.11.2012
Сообщений: 309
18.07.2014, 12:12 2
у меня выдает все правильно
PS C:\> test_func '10.10.2010'

9 октября 2010 г. 0:00:00
а в каком формате подается дата? ДД.ММ.ГГГГ?
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
18.07.2014, 12:54  [ТС] 3
дату подаю в формате 14/04/2000

Добавлено через 7 минут
попробуйте вбить другую дату и увидите несовпадение. например, 12.07.2014
0
88 / 88 / 37
Регистрация: 28.11.2012
Сообщений: 309
18.07.2014, 13:32 4
[datetime] приводит в формат ММ.ДД.ГГГГ соответственно 12.07.2014 он уменьшает до 6 декабря 2014 г.
я в свое время обходил это с помощью
PowerShell
1
(Get-Date '12.07.2014').adddays(-1)
1
Модератор
Эксперт JS
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
18.07.2014, 15:16 5
Вот получение в числовом виде, без июлей-июний и прочих буквенных месяцев:
PowerShell
1
((Get-Date "12.07.2014").adddays(-1).toString() -split "\s")[0]
Добавлено через 6 минут
Т.е в виде функции:
PowerShell
1
2
3
function test_func ($dates) {
((Get-Date $dates).adddays(-1).toString() -split "\s")[0] -replace "\.", "/" 
}
1
88 / 88 / 37
Регистрация: 28.11.2012
Сообщений: 309
18.07.2014, 15:38 6
еще вариант
PowerShell
1
get-date (Get-Date "12.07.2014").adddays(-1) -f d
и у этого ключа -f вот тут много вариантов
1
Модератор
Эксперт JS
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
18.07.2014, 15:45 7
borne, ага. Вот оно как.
В случае ТС, кмк, нужен такой формат:
PowerShell
1
get-date (Get-Date "12.07.2014").adddays(-1) -f ("d\/MM\/yy")
0
403 / 86 / 8
Регистрация: 16.02.2013
Сообщений: 358
18.07.2014, 20:41 8
Цитата Сообщение от FraidZZ Посмотреть сообщение
borne, ага. Вот оно как.
В случае ТС, кмк, нужен такой формат:
PowerShell
1
get-date (Get-Date "12.07.2014").adddays(-1) -f ("d\/MM\/yy")
Казалось бы задача решена, но на самом деле на выходе не DateTime, а String.
Да и решается не та задача. У автора на входе формат "14/04/2000". Я попробовал и с удивлением обнаружил, что прямые методы вроде ParseExact почему-то не работают.



Я, кстати, пока не решил
0
88 / 88 / 37
Регистрация: 28.11.2012
Сообщений: 309
21.07.2014, 10:54 9
А в чем задача не решена? У ТС была ошибка в том, что -1 день выводил не ту дату которую он ожидал. Потому что [datetime] получает ММ.ДД.ГГГГ и соответственно 12.07.2014 он представлял как 7 декабря и выдавал 6.12.2014 как результат. По поводу DateTime и String, по-моему формат ДатаВремя является только полностью дата и время в текущей локализации, как собственно и написано в названии ДатаВремя. И все форматирования отображения даты переводят ее в строку для обработки...по-моему это нормально и логично...
p.s. Можно еще использовать метод (get-date).ToShortDateString(), но он тоже переводит результат в String, что впрочем повторюсь нормально...
1
Модератор
Эксперт JS
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
21.07.2014, 11:02 10
Цитата Сообщение от Cat2 Посмотреть сообщение
Да и решается не та задача. У автора на входе формат "14/04/2000". Я попробовал и с удивлением обнаружил, что прямые методы вроде ParseExact почему-то не работают.
Странно, командлет
PowerShell
1
Get-Date "14/04/2000"
по-крайней мере у меня возвращает нормальную дату.
0
21.07.2014, 11:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2014, 11:02
Помогаю со студенческими работами здесь

Получить дату сегодняшнего дня
Помогите дописать код пожалуйста для Word: В ячейке B3 получить дату сегодняшнего дня, В ячейке...

php получить дату следующего дня
узнаем дату следующего дня (от текущего) $data=date("d.m.Y",time() + 24 * 60 * 60); а как...

Получить дату для дня недели
Помогите разобраться... Есть TextView pnText соответствующий дню недели Понедельник... Нужно...

Определить дату предыдущего дня и дату следующего дня
Условие 1::O_O: Дата некоторого дня определяется двумя натуральными числами m(порядковый номер...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru