我试图在PowerShell中创建一个switch
语句,以根据dayofweek
和get-date
运行不同的代码块,我认为它已经工作了,直到通过设置一个特定的日期进行测试,我发现代码并不像预期的那样工作。
在完美世界中,脚本将在周一运行。我的目标是以这些格式输出三个变量2/02/2015 1:00 am2015-02-02 Monday
,基本上是从星期一到下星期一增加一天。
问题来自于我试图预期脚本在周一以外的另一天运行。因此,我想使用(Get-Date).adddays($I)
来输出正确的日期,但是当我以后尝试使用Get-Date设置日期时,返回的日期是不正确的。
当我开始使用$var=(Get-date-year 2015-month 02-day 04).DayOfWeek
进行测试以设置特定的日期时,switch语句没有输出正确的日期。
下面是switch语句:
#$var = (get-date).DayOfWeek
$var = [DayOfWeek]::Sunday
#$var = (get-date -Year 2015 -Month 02 -Day 04).DayOfWeek
Switch ($var){
([DayOfWeek] 'Monday'){
for ($i = 1; $i -le 7; $i++){
$d = ((Get-Date).AddDays($i))
$d2 = ($d.ToString("M/dd/yyyy") + " 1:00 AM")
$d3 = ($d.ToString("yyyy-MM-dd"))
$d4 = (($d).DayOfWeek).ToString().ToUpper()
"$d2 $d3 $d4"}#End For
}#End Monday
([DayOfWeek] 'Tuesday'){
$i= 5,-1,0,1,2,3,4
foreach ($day in $i){
$d = ((Get-Date).AddDays($day))
$d2 = ($d.ToString("M/dd/yyyy") + " 1:00 AM")
$d3 = ($d.ToString("yyyy-MM-dd"))
$d4 = (($d).DayOfWeek).ToString().ToUpper()
"$d2 $d3 $d4"}#End For
}#End Tuesday
([DayOfWeek] 'Wednesday'){
$i= 5,-1,0,1,2,3,4
foreach ($day in $i){
$d = ((Get-Date).AddDays($day))
$d2 = ($d.ToString("M/dd/yyyy") + " 1:00 AM")
$d3 = ($d.ToString("yyyy-MM-dd"))
$d4 = (($d).DayOfWeek).ToString().ToUpper()
"$d2 $d3 $d4"}#End For
}#End Wednesday
([DayOfWeek] 'Thursday'){
$i= 4,-1,0,1,2,3,4
foreach ($day in $i){
$d = ((Get-Date).AddDays($day))
$d2 = ($d.ToString("M/dd/yyyy") + " 1:00 AM")
$d3 = ($d.ToString("yyyy-MM-dd"))
$d4 = (($d).DayOfWeek).ToString().ToUpper()
"$d2 $d3 $d4"}#End For
}#End Thursday
([DayOfWeek] 'Friday'){
$i= 5,-1,0,1,2,3,4
foreach ($day in $i){
$d = ((Get-Date).AddDays($day))
$d2 = ($d.ToString("M/dd/yyyy") + " 1:00 AM")
$d3 = ($d.ToString("yyyy-MM-dd"))
$d4 = (($d).DayOfWeek).ToString().ToUpper()
"$d2 $d3 $d4"}#End For
}#End Friday
([DayOfWeek] 'Saturday'){
$i= 5,-1,0,1,2,3,4
foreach ($day in $i){
$d = ((Get-Date).AddDays($day))
$d2 = ($d.ToString("M/dd/yyyy") + " 1:00 AM")
$d3 = ($d.ToString("yyyy-MM-dd"))
$d4 = (($d).DayOfWeek).ToString().ToUpper()
"$d2 $d3 $d4"}#End For
}#End Saturday
([DayOfWeek] 'Sunday'){
$i= 1,-1,0,1,2,3,4
foreach ($day in $i){
$d = ((Get-Date).AddDays($day))
$d2 = ($d.ToString("M/dd/yyyy") + " 1:00 AM")
$d3 = ($d.ToString("yyyy-MM-dd"))
$d4 = (($d).DayOfWeek).ToString().ToUpper()
"$d2 $d3 $d4"}#End For
}#End Sunday
}#End Switch
然后,可以通过在get-date
代理函数中设置get-date
来使脚本中的每个get-date
实例返回所需的任意日期。
这可能会有帮助。没有开关,只是数学。您可以将格式字符串更改为您喜欢的任何格式。只需更改“yyyy-mm-dd dddd hh:mm tt”。请参见自定义日期和时间格式字符串,以了解如何准确地获得所需的输出。
function get-nextweek ([System.DateTime]$p1)
{
#Set the time to 01:00
$p1 = [DateTime]($p1.Date + "01:00")
# + 1 week + 2 days (Tuesday) - Current day of week (0 based) % 7 + 0..6
0..6 | %{
#get number of days till Monday
$d = (8-$p1.DayOfWeek)%7+$_
#Add 7 if today is Monday to get next week
if($d -eq 0){$d=7}
#Output the days as a custom string
$out = $p1.AddDays($d)
"$($out.ToString('MM/dd/yyyy HH:mm tt yyyy-MM-dd')) $($out.DayOfWeek.ToString().ToUpper())"
}
}
产出:
C:\ > get-nextweek '01-29-2015'
02/02/2015 01:00 AM 2015-02-02 MONDAY
02/03/2015 01:00 AM 2015-02-03 TUESDAY
02/04/2015 01:00 AM 2015-02-04 WEDNESDAY
02/05/2015 01:00 AM 2015-02-05 THURSDAY
02/06/2015 01:00 AM 2015-02-06 FRIDAY
02/07/2015 01:00 AM 2015-02-07 SATURDAY
02/08/2015 01:00 AM 2015-02-08 SUNDAY
我有两个输入字段fromDate和toDate(都是date)。我使用datepicker作为输入字段fromDate。toDate是只读的,并且依赖于fromDate。也就是说,toDate的日期是6+。例如,如果fromDate是11/30/2014,则toDate是12/6/2014。 我的jsp代码是 和js代码为: 谢谢
问题内容: 我正在使用Liferay 6.2,并想使用 liferay-ui:input-date 字段。现场本身工作正常。但是我想更改显示的日期格式 毫米/日/年 至 dd.mm.yyyy 但是该怎么做呢?我看不到有什么衣服可以设置这个… 问题答案: 我查看了输入日期标记库代码,如果要更改模式,则必须修改其代码。文件的路径:\ webapps \ ROOT \ html \ taglib \ u
本文向大家介绍Windows Powershell Switch 循环,包括了Windows Powershell Switch 循环的使用技巧和注意事项,需要的朋友参考一下 Switch 本是多路分支的关键字,但是在Powershell中由于Switch支持集合,所以也可以使用它进行循环处理。下面举两个例子。 第一个将Foreach循环转换成Switch循环: 有时对集合的处理,在循环中还须条件
我不知道为什么我的代码给我一个空java.util.date. 问题:编写一个测试程序,创建一个帐户ID为1122,余额为20000,年利率为4.5%的帐户对象。使用提款方式提取2500美元,使用存款方式存入3000美元,并打印余额,每月利息,以及创建此帐户的日期 这是我的代码: }
大家好,所以我有这个MYSQl代码,我插入日期,当它发送和输入的日子,可以是从1做7。我怎样才能让MYSQl在输入天之后删除一行?例如:我在2021年22.03.2021下午3:54创建了一个产品,输入的过期天数是6天。我想删除产品后正好6天。
问题内容: 我有一个活动的编辑页面,我的一个字段是日期。在某些浏览器中,它看起来像纯文本框(IE8),但是在chrome中,它显示“ dd / mm / yyyy”,如果单击它,它还有一些其他选项可用于设置日期。 我的问题是在编辑页面上,它没有填充现有日期(我想是因为日期格式不正确?)。MVC控制器以“ 2014-03-08T00:00:00”格式返回数据(仅使用基本的CRUD控制器操作)。 我已