Brandon H Supervisor Posted December 13, 2017 Supervisor Share Posted December 13, 2017 Hello I'm working on a JavaScript array with several words in it and I want it to cycle to the next word every 90 days (or every 3 months if easier). Say I have an array like the following var word = ['test1', 'test2', 'test3', 'test4']; I'd like to do it by date string so I already have a set of variables setup to show date in the following format: YYYYMMDD 20171213 Any help would be appreciated, I am a bit new to JavaScript and Java in general. edit: current code <!doctype html> <html> <head> <meta charset="utf-8"> <title>JavaScript Word Testing</title> <script> var word = ['test1', 'test2', 'test3', 'test4']; var d = new Date(); var day = dom(d); var m1 = d.getMonth() + 1; var month = ('0' + m1).slice(-2); var year = d.getFullYear(); function dom(d) { return (d.getDate() < 10 ? '0' : '') + d.getDate(); } window.onload = function tf() { document.getElementById('dateid').innerHTML = year + month + day; document.getElementById('wordid').innerHTML = word[0]; }; </script> </head> <body> <p>Current Date: <span id='dateid'></span></p> <p>word: <span id='wordid'></span></p> </body> </html> Link to comment https://www.neowin.net/forum/topic/1350796-need-help-js-array-to-change-a-word-every-90-days/ Share on other sites More sharing options...
0 Seahorsepip Veteran Posted December 14, 2017 Veteran Share Posted December 14, 2017 Let's start by making a date: let date = new Date(); Then let's get our word: document.getElementById('wordid').innerHTML = word[Math.round((date.getMonth() + 1) / 3) - 1)]; //Pick a different word every 3 months As for the readable date string, consider using toLocaleDateString(): document.getElementById('dateid').innerHTML = date.toLocaleDateString(); As for the formatting, see the following options documentation: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString#Using_options As for every 30 days instead of every 3 months, see the many solutions/workarounds on stackoverflow: https://stackoverflow.com/questions/8619879/javascript-calculate-the-day-of-the-year-1-366 Or be lazy and use a library like moment.js for everything date related, day of year is as simple as: let day = moment().dayOfYear(); Then you simply do: document.getElementById('wordid').innerHTML = word[Math.round(day / 30) - 1)]; //Pick a different word every 30 days DevTech 1 Share Link to comment https://www.neowin.net/forum/topic/1350796-need-help-js-array-to-change-a-word-every-90-days/#findComment-598131614 Share on other sites More sharing options...
0 DevTech Posted December 18, 2017 Share Posted December 18, 2017 On 12/14/2017 at 4:19 AM, Seahorsepip said: As for every 30 days instead of every 3 months, see the many solutions/workarounds on stackoverflow: https://stackoverflow.com/questions/8619879/javascript-calculate-the-day-of-the-year-1-366 Or be lazy and use a library like moment.js for everything date related, day of year is as simple as: let day = moment().dayOfYear(); Then you simply do: document.getElementById('wordid').innerHTML = word[Math.round(day / 30) - 1)]; //Pick a different word every 30 days Using a well tested Library is never lazy. It is good engineering. It reduces the chances of bugs and saves time to focus on the main purpose of your app. And date calculations can be crazy akin to rolling your own encryption! For reference, NodaTime is great for .NET and it has been ported to Java as JodaTime: https://nodatime.org/ http://www.joda.org/joda-time/ For JavaScript, I agree with moment.js https://momentjs.com/ Link to comment https://www.neowin.net/forum/topic/1350796-need-help-js-array-to-change-a-word-every-90-days/#findComment-598134856 Share on other sites More sharing options...
0 Seahorsepip Veteran Posted December 18, 2017 Veteran Share Posted December 18, 2017 2 hours ago, DevTech said: Using a well tested Library is never lazy. It is good engineering. It reduces the chances of bugs and saves time to focus on the main purpose of your app. And date calculations can be crazy akin to rolling your own encryption! For reference, NodaTime is great for .NET and it has been ported to Java as JodaTime: https://nodatime.org/ http://www.joda.org/joda-time/ For JavaScript, I agree with moment.js https://momentjs.com/ With lazy I was referring to developers using external JS libraries for almost every single line of code resulting in 30 dependencies for 50 lines of code. Libraries are great but the moment you use libraries like https://www.npmjs.com/package/sum-of-two-numbers you should start getting worried Brandon H 1 Share Link to comment https://www.neowin.net/forum/topic/1350796-need-help-js-array-to-change-a-word-every-90-days/#findComment-598134946 Share on other sites More sharing options...
0 DevTech Posted December 18, 2017 Share Posted December 18, 2017 9 hours ago, Seahorsepip said: With lazy I was referring to developers using external JS libraries for almost every single line of code resulting in 30 dependencies for 50 lines of code. Libraries are great but the moment you use libraries like https://www.npmjs.com/package/sum-of-two-numbers you should start getting worried Yeah but... you made that particular point in the context of Date Calculations which few people realize are a tricky minefield, so it might have been more informative to say something like "if you are one of those minimalists that hate to use libraries, here is an area you should make an exception" But I could have worded my comment better since it is hard to get posts in this sub-forum and quibbling over details when you were providing some great help was mainly stupid on my part. I love that sum function for sheer understated Monty Pythonish afrontery. In keeping with that venerable Bristish tradition it would be nice if we could dream up a pull request on the project! It hasn't been updated in 3 years... Link to comment https://www.neowin.net/forum/topic/1350796-need-help-js-array-to-change-a-word-every-90-days/#findComment-598135460 Share on other sites More sharing options...
Question
Brandon H Supervisor
Hello
I'm working on a JavaScript array with several words in it and I want it to cycle to the next word every 90 days (or every 3 months if easier).
Say I have an array like the following
I'd like to do it by date string so I already have a set of variables setup to show date in the following format:
YYYYMMDD
20171213
Any help would be appreciated, I am a bit new to JavaScript and Java in general.
edit: current code
Link to comment
https://www.neowin.net/forum/topic/1350796-need-help-js-array-to-change-a-word-every-90-days/Share on other sites
4 answers to this question
Recommended Posts