Calculadora de fase da lua
Digite uma data e veja a fase da Lua: em 1º de janeiro de 2026 a Lua tem 12,421 dias, está 93,9% iluminada e na fase gibosa crescente. O cálculo usa o mês lunar médio de 29,530588853 dias. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Data
- 2026-01-01
- Idade lunar (dias)
- 12,421
- Iluminação (%)
- 93,9
- Fase
- Gibosa crescente
- Ciclo lunar (dias)
- 29,530588853
Dada uma data ISO, devolve a idade da Lua em dias desde uma lua nova conhecida, sua fração iluminada como porcentagem e a fase nomeada, usando o mês sinódico médio de 29.530588853 dias.
Como a fase da Lua é calculada
A Lua vai de nova a cheia e volta a nova em um mês sinódico médio de 29,530588853 dias. A calculadora conta os dias entre uma lua nova conhecida e a sua data, avaliada às 12:00 UTC, e fica só com o resto dentro do ciclo atual. Esse resto é a idade da Lua. A parte iluminada do disco segue uma curva suave dessa idade, perto de 0% na lua nova e com o máximo de 100% perto da lua cheia. Em 1º de janeiro de 2026 a idade é de 12,421 dias e a iluminação, de 93,9%.
Para que serve o resultado e quais são seus limites
O nome da fase vem da divisão do ciclo em oito faixas de duração parecida, da lua nova, passando pelas fases crescente, de quarto e gibosa, até voltar ao início. Por isso é uma fonte confiável para calendários, almanaques, painéis e ícones lunares de cada dia do mês. Trata-se de uma aproximação de fase média que ignora a órbita levemente elíptica da Lua, então a fase e a iluminação podem errar em cerca de um dia. Para posições astronômicas precisas, use efemérides de verdade.
Casos de uso
Calendários e widgets de almanaque
Mostre a fase e a iluminação de cada dia de um mês, alimentando ícones lunares a partir da fase nomeada determinística.
Perguntas frequentes
Qual período sinódico ela usa?
O mês sinódico médio de 29.530588853 dias, ancorado em uma lua nova de referência em 2000-01-06 18:14 UTC.
Quão precisas são a fase e a iluminação?
É um modelo de fase média que ignora a excentricidade orbital, então os resultados têm precisão de cerca de um dia, ideal para calendários e painéis.
Quais são as oito fases da Lua em ordem?
Lua nova, crescente, quarto crescente, gibosa crescente, lua cheia, gibosa minguante, quarto minguante e minguante. Cada uma ocupa mais ou menos um oitavo do mês lunar, e depois da última o ciclo recomeça na lua nova.
O que significa a idade da Lua?
É o número de dias desde a última lua nova, de 0 até cerca de 29,53 antes de o ciclo recomeçar. Em 1º de janeiro de 2026 a idade é de 12,421 dias, o que coloca a Lua na fase gibosa crescente.
Em que horário do dia a fase é calculada?
Cada data é avaliada às 12:00 UTC, o meio-dia no tempo universal. Assim existe uma única resposta por data, e um calendário mostra a mesma fase e iluminação onde quer que seja aberto.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/moon-phase \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2026-01-01"}'const res = await fetch("https://api.kit.forhosting.com/dev/moon-phase", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2026-01-01"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/moon-phase",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2026-01-01"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/moon-phase", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2026-01-01"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2026-01-01"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/moon-phase", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"date": "2026-01-01"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.moon_phase",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
O modelo de idade pelo mês sinódico
A iluminação é derivada dessa idade como (1 - cos(2*pi*age/SYNODIC_DAYS)) / 2 * 100, uma curva suave que atinge o pico de 100% perto da lua cheia e perto de 0% na lua nova. Ele avalia cada data às 12:00 UTC, toma os milissegundos decorridos desde a época, divide por 86400000 para obter dias e reduz isso módulo o comprimento sinódico; um resto negativo é avançado somando um período completo, então age_days está sempre em [0, 29.53).
Como o nome da fase é escolhido
Esta é uma aproximação de fase média: ela ignora a excentricidade orbital da Lua, então a fase nomeada e a iluminação têm precisão de cerca de um dia, o que é mais que suficiente para calendários, painéis e conteúdo, mas não para trabalho de efeméride preciso. A cadeia da fase é escolhida comparando age_days com oito limiares fixos, cada um aproximadamente um oitavo do mês sinódico. Idades abaixo de 1.84566 são 'new', depois 'waxing_crescent' abaixo de 5.53699, 'first_quarter' abaixo de 9.22831, 'waxing_gibbous' abaixo de 12.91963, 'full' abaixo de 16.61096, 'waning_gibbous' abaixo de 20.30228, 'last_quarter' abaixo de 23.99361 e 'waning_crescent' abaixo de 27.68493; qualquer valor igual ou acima desse limite final volta para 'new'. Como a idade para 2026-01-01 é 12.421, ela cai na faixa waxing_gibbous.
Validação de data e arredondamento
A data deve ser uma cadeia no formato estrito YYYY-MM-DD, verificada por regex; o mês deve ser de 1 a 12 e o dia de 1 a 31, e o calendário real é verificado com uma sondagem UTC antes de qualquer aritmética, de modo que uma data impossível como 2026-02-30, que o Date do JavaScript avançaria silenciosamente para março, é rejeitada como invalid_input em vez de aceita sem alarde. O parâmetro opcional decimals assume 3 por padrão e deve ser um inteiro de 0 a 6. age_days é arredondado half-up a essa precisão, enquanto illumination_percent é sempre arredondado para uma única casa decimal, independentemente de decimals. A resposta também repete a data de entrada e a constante synodic_days, e qualquer intermediário não finito levanta invalid_input.
Casos de integração
Fotografia e planejamento ao ar livre
Consulte illumination_percent ao longo de um intervalo de datas para encontrar as noites mais escuras ou mais claras para astrofotografia ou trabalho de campo.
Automação de conteúdo e agendamento
Processe datas em lote pela API para marcar posts, eventos ou guias de pesca/jardinagem com a fase da lua correta.
Perguntas técnicas
Quais formatos de data são aceitos?
Apenas cadeias estritas YYYY-MM-DD. Datas impossíveis como 2026-02-30 são rejeitadas como invalid_input em vez de avançadas.
Quais são os possíveis valores de fase?
new, waxing_crescent, first_quarter, waxing_gibbous, full, waning_gibbous, last_quarter e waning_crescent, escolhidos por limiares de idade.
É gratuito e quanto custa a API?
O widget na página é gratuito (tier A) e roda o mesmo núcleo determinístico; as chamadas de API são cobradas por requisição bem-sucedida a partir de US$ 0,002.