Кратчайший способ печати текущего года на сайте

Мне нужно обновить несколько сотен статических HTML-страниц, в заголовке которых прописана дата авторского права. Я хочу заменить его на JavaScript, который будет автоматически обновляться каждый год.

В настоящее время я использую:

<script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script>

Это так коротко, как только можно?

Ответ 1

Здесь самое короткое, что я могу получить:

<script>document.write(new Date().getFullYear())</script>

Это будет работать во всех браузерах, с которыми я столкнулся.

Как я туда попал:

  • Вы можете просто вызвать getFullYear непосредственно на вновь созданный Date, без необходимости в переменной. new Date().getFullYear() может выглядеть немного странно, но он надежен: сначала выполняется часть new Date(), затем .getFullYear().
  • Вы можете отказаться от type, потому что JavaScript по умолчанию; это даже документировано как часть спецификация HTML5, которая, вероятно, в этом случае будет писать то, что уже делают браузеры.
  • Вы можете оставить точку с запятой в конце для одного дополнительного сохраненного символа, потому что у JavaScript есть "автоматическая точка с запятой", функция, которую я обычно презираю и рельсу, но в этом конкретном случае использования она должна быть достаточно безопасной.

Важно отметить, что это работает только в браузерах, где включен JavaScript. В идеале, это будет лучше обрабатываться как автономное пакетное задание (sed script on * nix и т.д.) Один раз в год, но если вы хотите использовать решение JavaScript, я думаю, что это будет как можно короче. (Теперь я ушел и искушал судьбу.)

Ответ 2

Ответ TJ превосходный, но я столкнулся с одним сценарием, где мой HTML уже был обработан, а document.write script будет перезаписывать все содержимое страницы только с датой.

Для этого сценария вы можете добавить текст node к существующему элементу, используя следующий код:

<div>
    &copy;
    <span id="copyright">
        <script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script>
    </span>
    Company Name
</div>

Ответ 3

Если вы хотите включить временные рамки в будущем, то в текущем году (например, 2017) в качестве начального года, чтобы следующий год был следующим: "© 2017-2018, Компания.", затем используйте следующие код. Itll автоматически обновляется каждый год:

&copy; Copyright 2017<script>new Date().getFullYear()>2017&&document.write("-"+new Date().getFullYear());</script>, Company.

© Copyright 2017-2018, Company.

Но если первый год уже прошел, кратчайший код можно записать следующим образом:

&copy; Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.

Ответ 4

<script type="text/javascript">document.write(new Date().getFullYear());</script>

Ответ 5

Решение JS отлично работает, но я бы посоветовал серверное решение. На некоторых сайтах, которые я проверил, эта проблема оставалась пустой, и только год был замечен время от времени.

Причиной этого было то, что document.write фактически написал весь документ.

Я попросил моего друга реализовать решение на стороне сервера, и это сработало для него. Простой код в php

<?php echo date('Y'); ?>

Наслаждайтесь!

Ответ 6

Здесь самая короткая и ответственная версия, которая работает как в AD, так и в BC.

[барабанные дроби...]

<script>document.write(Date().split' '[3])</script>

Это. 6 байт короче принятого ответа.

Если вам нужно быть совместимым с ES5, вы можете согласиться на:

<script>document.write(Date().split(' ')[3])</script>

Ответ 7

Это лучшее решение, которое я могу придумать, которое будет работать с чистым JavaScript. Вы также сможете стилизовать элемент, так как он может быть нацелен на CSS. Просто добавьте вместо года, и он будет автоматически обновляться.

//Wait for everything to load first
window.addEventListener('load', ()=>{

//Wrap code in IIFE 
(function (){

//If your page has an element with ID of auto-year-update the element will be populated with the current year.
var date=new Date();
if(document.querySelector("#auto-year-update")!==null){
document.querySelector("#auto-year-update").innerText=date.getFullYear();
}
})();
});

Ответ 8

разметка

<footer>
 &copy; <span id="year">2019</span>
 </footer>

JavaScript

<script>
document.getElementById("year").innerHTML = new Date().getFullYear();