The heart of tech

This article was published on December 29, 2010


    New Year’s Resolutions: Dynamically Update your Copyright Notices (includes all code samples)

    New Year’s Resolutions: Dynamically Update your Copyright Notices (includes all code samples)
    Boris Veldhuijzen van Zanten
    Story by

    Boris Veldhuijzen van Zanten

    CEO and co-founder, TNW

    Boris is a serial entrepreneur who founded not only TNW, but also V3 Redirect Services (sold), HubHop Wireless Internet Provider (sold), and Boris is a serial entrepreneur who founded not only TNW, but also V3 Redirect Services (sold), HubHop Wireless Internet Provider (sold), and pr.co. Boris is very active on Twitter as @Boris and Instagram: @Boris.

    happy_new_yearOnly a couple of days left until we celebrate the new year. Champagne, parties, fireworks and yes, new years resolutions.

    One thing that is on a lot of web professionals todo lists is to update their ‘Copyright’ notices. Or at least it should be.

    A lot of websites take hours, days or even years to update. Google generally takes up to 48 hours to update all their footers but it is not unlikely to find “Copyright 2006” on some websites even today.

    So why not automate the whole thing like we did for our blog? A few lines of code are enough to just print the year there. As long as your server’s internal clock is on time you will always display the current year.

    Since you are going into code anyway you might as well change that “2010” to one of the dynamic code snippets below and you will be forever up-to-date:

    PHP:
    <?php print date("Y"); ?>

    ASP:
    <%response.write("Current Year: "&Year(Date))%>

    ASP.NET:
    <%Response.Write(System.DateTime.Now.Year.ToString());%>

    Javascript:
    <script type="text/javascript">
    <!--
    document.write(new Date().getFullYear())
    //-->
    </script>

    Ruby:
    Date.today.year

    Java
    import java.util.*;
    import java.text.*;

    public class Apollo {
    public static void main(String[] args) {
    Date date = new Date();
    SimpleDateFormat simpleDateformat=new SimpleDateFormat("yyyy");
    System.out.println(simpleDateformat.format(date));
    }
    }

    Unix Shell
    date +%Y
    Go (golang)
    package main
    import ("fmt"
    "time")
    func main() {
    var t = time.LocalTime()
    fmt.Println(t.Year)
    }

    Python
    from datetime import date
    print date.today().year

    x86 Assembly
    jmp start
    year db "0000$"
    start:
    mov ah, 04h
    int 1Ah

    mov bh, ch
    shr bh,4
    add bh,30h
    mov [year], bh
    mov bh,ch
    and bh,0fh
    add bh,30h
    mov [year+1],bh

    mov bh, cl
    shr bh,4
    add bh,30h
    mov [year+2], bh
    mov bh,cl
    and bh,0fh
    add bh,30h
    mov [year+3],bh

    mov ah,09h
    mov dx, offset year
    int 21h

    mov ah,4Ch
    mov al,00
    int 21h

    Lua
    print(os.date("*t").year)

    Clojure
    (let [date (java.util.Date.)
    sdf (java.text.SimpleDateFormat. "yyyy")]
    (println (.format sdf date)))

    Objective-C
    #import
    int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSLog (@"%d", [[NSCalendarDate date] yearOfCommonEra]);
    [pool drain];
    return 0;
    }

    Tcl
    set year [clock format [clock seconds] -format {%Y}]
    puts $year

    Delphi
    ShowMessage( IntToStr(YearOf(Now)) );

    Haskell
    import System.Time
    main = getClockTime >>= toCalendarTime >>= print . ctYear

    Any other code snippets that are useful?
    Let me know in the comments so I can add them.

    @redfeet: @Boris Asp.Net: <%=Now.Year.toString%> Classic ASP: <%=Year(Date())%>
    all the best for the 10