Кратчайший способ печати текущего года на сайте - PullRequest
187 голосов
/ 30 декабря 2010

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

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

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

Это так коротко, как это получается?

Ответы [ 7 ]

475 голосов
/ 30 декабря 2010

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

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

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

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

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

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

26 голосов
/ 17 сентября 2015

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

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

<div>
    &copy;
    <span id="copyright">
        <script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script>
    </span>
    Company Name
</div>
12 голосов
/ 21 августа 2014

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

&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.
11 голосов
/ 30 декабря 2010
<script type="text/javascript">document.write(new Date().getFullYear());</script>
8 голосов
/ 25 марта 2015

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

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

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

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

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

7 голосов
/ 22 августа 2016

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

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

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

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

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

<script>document.write(Date().split(' ')[3])</script>
1 голос
/ 06 июля 2019

Это лучшее решение, которое я могу придумать, которое будет работать с чистым 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();
}
})();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...