Preencher datas da semana anterior com Javascript

Assumindo que você tenha 6 campos de formulário, os três primeiros para representar a data inicial, (inicio_dia, inicio_mes e inicio_ano), e os outros três para representar a data final (fim_dia, fim_mes, fim_ano), usando o Dojo Toolkit é muito fácil colocar nas datas de início a segunda-feira da semana passada e na data final, o domingo da semana passada.

Aqui vai a função que eu uso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function periodo_semana_passada()
{
    var data_atual = new Date();
 
    // Dia da semana atual (1 segunda, 7 domingo)
    var weekday = dojo.date.format(data_atual, '%u');
 
    // O dia do ano servirá para colocarmos no objeto de data um novo valor
    var dia_do_ano = dojo.date.getDayOfYear(data_atual) - 7;
    var data_inicio = dojo.date.setDayOfYear(data_atual, dia_do_ano - (weekday - 2));
    // O final é a segunda-feira mais seis dias
    var data_fim = dojo.date.add(data_inicio, 'day', 6);
 
    document.getElementById('inicio_dia').value = dojo.date.format(data_inicio, '%d');
    document.getElementById('inicio_mes').value = dojo.date.format(data_inicio, '%m');
    document.getElementById('inicio_ano').value = dojo.date.format(data_inicio, '%Y');
    document.getElementById('fim_dia').value = dojo.date.format(data_fim, '%d');
    document.getElementById('fim_mes').value = dojo.date.format(data_fim, '%m');
    document.getElementById('fim_ano').value = dojo.date.format(data_fim, '%Y');
}

Depois é só chamar a função em algum evento, por exemplo:

1
preencher com a semana <a href="#" onclick="periodo_semana_passada();">passada</a>