Определите альтернативные даты в .NET (в PowerShell, C # или VB) - PullRequest
0 голосов
/ 17 октября 2018

Какой самый простой способ выполнить операцию на основе альтернативных дат?

В основном у меня есть 2 папки ( dir1 & dir2) в файловом хранилище Azure, в котором файлы должны копироваться (перезаписываться) ежедневно - один день в «dir1», следующий день в «dir2».

I 'Я пытаюсь написать это в PowerShell (но доволен вашими ответами в C # или VB).

Я пробовал логику четных / нечетных дат, но она прерывается, если месяц заканчивается 31-го числа - потому что следующая дата, т. е. 1-я также являетсянечетное число (та же проблема с днем ​​года, что и после того, как 365. 1-е число, являющееся нечетным числом).

if((Get-Date).Day % 2 -eq 0 ) {"copy files in dir1"} else {"copy files in dir2"}

ИЛИ

if((Get-Date).DayOfYear % 2 -eq 0 ) {"copy files in dir1"} else {"copy files in dir2"}

Я полагаю, что другим методом может быть чтениеАтрибут файла « Last-Modified », но я пытаюсь прочитать его, поскольку содержащиеся в нем папки находятся в облаке Azure (в хранилище файлов Azure).

Буду признателен за любые идеи.ТИА

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Вот решение в PowerShell.Я применил четную / нечетную логику к «количеству дней», которое вычисляется / генерируется как , вычитая текущую дату с фиксированной датой (как предложили другие), я написал+ протестировал его в PowerShell и может подтвердить, что он работает нормально.

if(((Get-Date)-[DateTime]'2018-01-01').Days % 2) {'use dir1'} else{'use dir2'}

ИЛИ

$fixedDate = (Get-Date "01/01/2018")
$today = (Get-Date)
$ts = New-TimeSpan -Start $fixedDate -End $today
if(($ts).Days % 2 -eq 0) {"copy files in dir1"} else {"copy files in dir2"}

Спасибо.

0 голосов
/ 17 октября 2018

Вы можете просто рассчитать количество дней с фиксированного момента времени и использовать его для определения четного или нечетного.

if (((Get-Date) - [DateTime]'1970-01-01').Days % 2) {
    Write-Host 'odd day'
} else {
    Write-Host 'even day'
}
0 голосов
/ 17 октября 2018

Вместо дня месяца или дня года , вы можете использовать день с некоторого фиксированного момента времени :

int totalDays = (int)DateTime.UtcNow.Subtract(new DateTime(1970,1,1,0,0,0)).TotalDays;
if (totalDays % 2 == 0) { }
else { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...