Date Calculator
Calculate date differences and perform date operations.
Gratis ate 10 MB por arquivo100 MB por enviosem anuncio antes do limite
$titulo = 'Calculadora de Datas';
$descricao = 'Calcule diferenças entre datas, adicione ou subtraia dias, meses e anos';
$palavrasChave = 'calculadora datas, diferença datas, adicionar dias, subtrair datas';
$data1 = '';
$data2 = '';
$operacao = 'diferenca';
$dias = 0;
$meses = 0;
$anos = 0;
$resultado = null;
$explicacao = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$operacao = $_POST['operacao'] ?? 'diferenca';
if ($operacao === 'diferenca') {
$data1 = $_POST['data1'] ?? '';
$data2 = $_POST['data2'] ?? '';
if (!empty($data1) && !empty($data2)) {
$resultado = calcularDiferencaDatas($data1, $data2);
$explicacao = "Diferença entre " . date('d/m/Y', strtotime($data1)) . " e " . date('d/m/Y', strtotime($data2));
}
} else {
$data1 = $_POST['data_base'] ?? '';
$dias = intval($_POST['dias'] ?? 0);
$meses = intval($_POST['meses'] ?? 0);
$anos = intval($_POST['anos'] ?? 0);
if (!empty($data1)) {
$resultado = calcularOperacaoData($data1, $dias, $meses, $anos, $operacao);
$operacaoNome = $operacao === 'adicionar' ? 'adicionando' : 'subtraindo';
$explicacao = "{$operacaoNome} {$dias} dias, {$meses} meses, {$anos} anos a " . date('d/m/Y', strtotime($data1));
}
}
}
function calcularDiferencaDatas($data1, $data2) {
$timestamp1 = strtotime($data1);
$timestamp2 = strtotime($data2);
if ($timestamp1 === false || $timestamp2 === false) {
return null;
}
$diferenca = abs($timestamp2 - $timestamp1);
$dias = floor($diferenca / (60 * 60 * 24));
$anos = floor($dias / 365);
$meses = floor(($dias % 365) / 30);
$diasRestantes = $dias % 30;
return [
'anos' => $anos,
'meses' => $meses,
'dias' => $diasRestantes,
'total_dias' => $dias
];
}
function calcularOperacaoData($dataBase, $dias, $meses, $anos, $operacao) {
$timestamp = strtotime($dataBase);
if ($timestamp === false) {
return null;
}
$multiplicador = $operacao === 'adicionar' ? 1 : -1;
// Adicionar/subtrair anos
$timestamp = strtotime(($anos * $multiplicador) . ' years', $timestamp);
// Adicionar/subtrair meses
$timestamp = strtotime(($meses * $multiplicador) . ' months', $timestamp);
// Adicionar/subtrair dias
$timestamp = strtotime(($dias * $multiplicador) . ' days', $timestamp);
return date('Y-m-d', $timestamp);
}
?>
Recommended next step
Keep this result working for you
Minike connects the tool you are using with the product most likely to generate recurring value.
$9.90/mo
Minike Tools Pro
Bigger conversions, no main ads and priority processing.
Free: 10 MB per file and 100 MB per batch.
$5.90/mo
Minike Sites
Turn converted assets into pages, landing pages and stores.
Free preview before publishing.
Prices shown for Brazil and US positioning. Current local checkout charges BRL until the international gateway is enabled.