Unique ID that gets a date in specific format?

I have code that will generate a random unique id.. but is there a way I can edit this code so that it grabs a date in a specific way like yyyy-mm-dd-0001. the last 4 digits I want it to add 1 each time the generateid button is clicked. so it will change to 0002. Here is the current code I have. Is there a function that can grab the date automatically?

  var counter = 0000;
    function Counter() {
if((document.getElementById("generateid").clicked == true)
{
Counter++
return counter;
}
    }




    function Month() {
        var m = new Date();
        var mm = m.getMonth() + 1;
        if (mm < 10) {
            mm = '0' + mm;
            return mm;
        } 


    }
    function Year() {
        var y = new Date();
        var yy = y.getFullYear();
        return yy;
    }
    function Day() {
        var d = new Date();
        var dd = d.getDate();
        return dd;
    }
//generate id
    function guidGenerator() {
        var theID = (Year() + "-" + Month() + "-" + Day() + "-" + Counter);
        return theID;
    }

    function generateID() {

        var TheTextBox = document.getElementById("generateidtxt");
        TheTextBox.value = TheTextBox.value + guidGenerator();
        document.getElementById("generateid").disabled = true;

    }

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You can use the following object:

var idGenerator  = {
    seq: 0,
    generateId: function () {
       this.seq++;
       return (new Date()).toISOString().substring(0, 10) + '-' + ('000' + this.seq).substr(-4)
    }
}

after declaration like this, try

function generateID() {
   var TheTextBox = document.getElementById("generateidtxt");
   TheTextBox.value = TheTextBox.value + idGenerator.generateId();
   document.getElementById("generateid").disabled=true;    
}

Method 2

If you are asking for a way to keep track of how many times an ID is generated by all your site visitors using javascript alone then, no it is not possible without tying in some back end to keep track. However, the following code will do what you ask per visitor.

jsfiddle

var ttlIds = 0;

function guidGenerator() {
    var S4 = function () {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    }
    return (S4() + S4() + S4());

}

function generateID() {

    var TheTextBox = document.getElementById("generateidtxt");
    TheTextBox.value = TheTextBox.value + guidGenerator().toString().toUpperCase();
    //document.getElementById("generateid").disabled=true; 

    ttlIds++;
    if(ttlIds < 10){
        ttlIds_formatted = '000'+ttlIds;
    }else if(ttlIds < 100){
        ttlIds_formatted = '00'+ttlIds;
    }else if(ttlIds < 1000){
        ttlIds_formatted = '0'+ttlIds;    
    }
    d = new Date();
    var funkydate = d.getFullYear() +'-' + (d.getMonth()+1) + '-' + d.getDate() + '-' + ttlIds_formatted;
    document.getElementById("funkydate").value = funkydate;

}


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x