• 0

Need Help: JS array to change a word every 90 days


Question

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>

 

4 answers to this question

Recommended Posts

  • 0

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

 

  • 0
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/

 

 

  • 0
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 :shiftyninja:

  • 0
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 :shiftyninja:

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...

 

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • This is exactly why I keep saying we are not ready for human free self-driving. These little "bugs" are may seem like random one-offs. There was also the Waymo that drove between police with drawn guns and the suspect they were pointing them at. From a software perspective it is easy to understand how those extremely rare situations may not have been programed for, but that is the point. If AI needs to be told to watch out for every possible contingency, then it can never be successful. There will always be the possibility of a first encounter that the AI needs to understand to avoid.
    • TeraCopy 4.0 Final by Razvan Serea TeraCopy is a compact program designed to copy and move files at the maximum possible speed, also providing you with a lot of features. Copy files faster. TeraCopy uses dynamically adjusted buffers to reduce seek times. Asynchronous copy speeds up file transfer between two physical hard drives. Pause and resume transfers. Pause copy process at any time to free up system resources and continue with a single click. Error recovery. In case of copy error, TeraCopy will try several times and in the worse case just skips the file, not terminating the entire transfer. Interactive file list. TeraCopy shows failed file transfers and lets you fix the problem and recopy only problem files. Shell integration. TeraCopy can completely replace Explorer copy and move functions, allowing you work with files as usual. TeraCopy is free for non-commercial use only. For commercial use you need to buy a license. The paid version of the program includes the following features: Copy/move to your favorite folders. Save reports as HTML and CSV files. Select files with the same extension/folder. Remove the selected files from the copy queue. Download: TeraCopy 4.0 | 14.6MB (Freeware, paid upgrade available) View: TeraCopy Website | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Recycle Bin has been broken for literal YEARS now. The setting to delete files older than 30 days from the bin which is on by default doesn't even work. I have files older than 4 months in it and they are just there still...
  • Recent Achievements

    • Week One Done
      Eurosoft10 earned a badge
      Week One Done
    • One Month Later
      Eurosoft10 earned a badge
      One Month Later
    • One Year In
      Skeet Campbell earned a badge
      One Year In
    • One Month Later
      Sharbel earned a badge
      One Month Later
    • First Post
      BizSAR earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      587
    2. 2
      +Edouard
      187
    3. 3
      Michael Scrip
      74
    4. 4
      PsYcHoKiLLa
      72
    5. 5
      neufuse
      69
  • Tell a friend

    Love Neowin? Tell a friend!