I need to update a few hundred static HTML pages that have the copyright date hard coded in the footer. I want to replace it with some JavaScript that will automatically update each year.
Currently I’m using:
<script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script>
Is this as short as it gets?
Best Solution
Years later, when doing something else I was reminded that
Date()
(withoutnew
) returns a string, and a way that's one character shorter that my original below came to me:The first sequence of four digits in the string from
Date()
is specified to be the year. (That wasn't specified behavior — though it was common — when my original answer below was posted.)Of course, this solution is only valid for another 7,979 years (as of this writing in 2021), since as of the year 10000 it'll show "1000" instead of "10000".
You've asked for a JavaScript solution, so here's the shortest I can get it:
That will work in all browsers I've run across.
How I got there:
getFullYear
directly on the newly-createdDate
, no need for a variable.new Date().getFullYear()
may look a bit odd, but it's reliable: thenew Date()
part is done first, then the.getFullYear()
.type
, because JavaScript is the default; this is even documented as part of the HTML5 specification, which is likely in this case to be writing up what browsers already do.It's important to note that this only works on browsers where JavaScript is enabled. Ideally, this would be better handled as an offline batch job (
sed
script on *nix, etc.) once a year, but if you want the JavaScript solution, I think that's as short as it gets. (Now I've gone and tempted fate.)However, unless you're using a server that can only provide static files, you're probably better off doing this on the server with a templating engine and using caching headers to allow the resulting page to be cached until the date needs to change. That way, you don't require JavaScript on the client. Using a non-
defer
/async
script
tag in the content also briefly delays the parsing and presentation of the page (for exactly this reason: because the code in the script might usedocument.write
to output HTML).