2010-02-02 2 views
2

OK 그래서 예를 들어, 오늘은 화요일, 2월 02 인이었다?작년 같은 요일에 대한 날짜를 찾으십니까? 그런데 작년에 해당하는 "<strong>화요일</strong>는"</p> <p>는 어떻게 프로그래밍 방식을 찾을 수 있습니다 2월 03에

감사합니다.

+2

당신은 "해당 화요일는"무엇을 정의해야 할 수 있습니다, 그것은 가장 가까운 화요일 년 2 월 2? 그 둘이 화요일 첫 번째 화요일입니까? 또는 올해의 다섯 번째 화요일? 이들에 대한 답변은 대개 동일 할 수도 있지만 모든 경우에 해당하지는 않습니다. – invertedSpear

+0

1 년 전에 같은 요일을 찾으려면 주어진 날짜로부터 52 주 또는 364 일을 빼면됩니다. http://stackoverflow.com/a/41776747/3817004를 참조하십시오. – Uwe

답변

3

그냥 내 두 센트. 두 번째 대답은 일년에 52 주를 가정하고, 1 년 동안은 효과가 있지만,이 정확한 문제에 대한 해결책입니다 (예 : 아이디어가 마음에 들지 않습니다. 똑같은 것을 10 년 동안 되돌아 가려고했는지 확인하고 싶다면 작동하지 않을 것입니다. 나는 이런 식으로 할 거라고 :

var today:Date = new Date();  
// Here we store the day of the week    
var currentDay:int = today.day; 
trace (today);  
const milisecondsInADay:uint = 1000*60*60*24; 
// Here we move back a year, but we can just as well move back 10 years 
// or 2 months  
today.fullYear -= 1; 
// Find the closest date that is the same day of the week as current day 
today.time -= milisecondsInADay*(today.day-currentDay);  
trace (today); 

반환 :

Tue Feb 2 21:13:18 GMT+0100 2010 
Tue Feb 3 21:13:18 GMT+0100 2009 
+0

당신이 말하려고한다면, 당신은 윤초를 고려하고 싶을 것입니다. – Timmy

+0

죄송합니다! 나는 당신이 의미하는 바를 이해하지 못한다고 생각합니다. 52 주는 364 일입니다. 즉, 실제로하는 일은 하루나 이틀 전으로 날짜를 옮기는 것입니다. 여기에서는 실제로 actionscript 날짜 클래스를 사용하여 뒤로 이동하고 그것이 제공 한 날짜를 둘러 봅니다. –

+0

귀하의 답변은 광산이나 Stiggler 's보다 깨끗한 것으로 보입니다. 실제로, 나는 나의 대답이 실제로 원래 질문에 대답하지 않는다는 것을 깨달았습니다 ... – Dan

2

Google에 따르면 1 주일에 604,800,000 밀리 초가 있습니다. 그 시간 52는 일년 후 같은 요일에 당신에게 줄 것입니다 (맞습니까?). 예를 들어

:

var date:Date = new Date(2010, 1, 2); 
trace(date); 
date.setMilliseconds(date.milliseconds - 604800000 * 52); 
trace(date); 

출력 :

Tue Feb 2 00:00:00 GMT-0800 2010 
Tue Feb 3 00:00:00 GMT-0800 2009 
+0

1 년이 아닌 604 800 000ms를 말할 수 있다고 생각합니다. – Dan

+0

Yikes, 단순한 오타 사람들이었습니다. 나는 분명히 주를 의미했다. – Stiggler

+0

downvote에 대한 오타가 부족합니다. – invertedSpear