[已解决]请问每月的第三个星期五如何表达
本帖最后由 lnlyf 于 2012-4-23 18:09 编辑哪位老大帮帮忙,多谢了! 回复 1# lnlyf
#include <Date.au3>
$year = InputBox('输入年份', '输入年份,例如: 2012', 2012, '')
If $year = '' Or StringLen($year) <> 4 Or Not StringIsDigit($year) Then $year = @YEAR
$mon = InputBox('输入月份', '输月年份,例如: 6', 6, '')
If $mon = '' Or StringLen($mon) > 2 Or StringLen($mon) < 1 Or Not StringIsDigit($mon) Then $mon = @MON
$days = _DateDaysInMonth($year, $mon) ; 返回该年该月份的最大天数
Local $count = 0, $iWeekday
For $i = 1 To $days
$iWeekday = _DateToDayOfWeek($year, $mon, $i)
If $iWeekday = 6 Then $count += 1
If $count = 3 Then
MsgBox(0, '该月第3个星期五', StringFormat('%s-%s-%s', $year, $mon, $i))
ExitLoop
EndIf
Next 什么叫每个月的第三个星期五,年管不管 不知道是不是楼主的意思
#include <Date.au3>
MsgBox(1,"",test(@YEAR, @MON))
Func test($year,$MON)
$iWeekday = _DateToDayOfWeekISO ($year, $MON, 1)
If $iWeekday = 7 Then
Return $year&"-"&$MON&"-"&(19+1)
Else
Return $year&"-"&$MON&"-"&(19-$iWeekday+1)
EndIf
EndFunc
什么叫每个月的第三个星期五,年管不管
netegg 发表于 2012-4-23 16:12 http://www.autoitx.com/images/common/back.gif
谢谢,年不用管的。 谢谢user3000 和502762378 两位高手。
502762378 的方法即得到当月的第三个星期五,应该能满足需要了,再次感谢!!! 不知道是不是楼主的意思
502762378 发表于 2012-4-23 16:20 http://www.autoitx.com/images/common/back.gif
再请教下,如果是第三个星期四,该改哪里呢,新手看不明白,谢谢! 再请教下,如果是第三个星期四,该改哪里呢,新手看不明白,谢谢!
lnlyf 发表于 2012-4-23 17:06 http://www.autoitx.com/images/common/back.gif
把19改成18就可以得到星期四,但不明白原理,惭愧。。。 不好意思,刚刚开完会
我是看着日历回答你的问题的,你看看日历就明白什么意思了
#include <Date.au3>
MsgBox(1,"",test(@YEAR, @MON))
Func test($year,$MON)
$iWeekday = _DateToDayOfWeekISO ($year, $MON, 1);返回指定年月第一天星期的数字
If $iWeekday = 7 Then;当为星期天时。。。
Return $year&"-"&$MON&"-"&(19+1);两个礼拜零五天为19天,再加个星期天一天不就是天数吗?
Else
Return $year&"-"&$MON&"-"&(19-$iWeekday+1);
EndIf
EndFunc
回复 8# lnlyf
4楼代码, 先推算出本月1号是星期几, 然后以此为基准继续推算第3个星期五!
如果1号是星期六, 则第3个星期五的号数将会是: +14 (两个星期) + 6(又过6天就是星期五)!
1号不是星期六, 则要多减出该星期已过的天数, 即代码里:- $iWeekday
如果是星期四, 则是 14 + 5 ; 星期三 14+4
是6还是5还是4, 是由 @WDAY 星期某天返回的数字决定的! 回复 9# 502762378
$iWeekday = 7 应该是星期六!
西方是以星期天为每星期的第一天!
1 为星期天, 2为星期一...7为星期六! 回复 9# 502762378
_DateToDayOfWeekISO($iYear, $iMonth, $iDay)
返回一个指定日期的国际标准(ISO)星期(n)数
.成功: 返回一周中的星期几(范围1 到 7),1=Monday(星期一).
汗, 结果是自己错了, 惯性思维! 谢谢两位高手的解答,问题已解决。 股指期货交割? 股指期货交割?
页:
[1]