JSFiddle - React, Tailwind, and code Playground
by Cheng Long Xiao
HTML
<textarea></textarea>
CSS
textarea {
width: 100%;
height: 500px;
tab-size: 6;
}
JavaScript
/*jshint forin:true, noarg:true, noempty:true, eqeqeq:true, bitwise:true, strict:true, undef:true, unused:true, curly:false, browser:true, jquery:true, indent:4, maxerr:50, laxcomma: true */
$(function() {
'use strict';
var expectations
, ta = $('textarea')
, result = ''
, i
, e
, date
, ewom
, wom
, tab = '\t'
, newline = '\r\n'
;
Date.prototype.getWeekOfMonth = function(/*exact*/) {
var month = this.getMonth()
, year = this.getFullYear()
, firstWeekday = new Date(year, month, 1).getDay()
, offset = new Date(year, month, 1).getDay()
, lastDateOfMonth = new Date(year, month + 1, 0).getDate()
, offsetDate = this.getDate() + firstWeekday - 1
, index = 1 // start index at 0 or 1, your choice
, weeksInMonth = index + Math.ceil((lastDateOfMonth + firstWeekday - 7) / 7)
, week = index + Math.floor(offsetDate / 7)
;
// if (exact || week < 2 + index) return week;
// return week === weeksInMonth ? index + 5 : week;
return ( this.getDate() + (this.getDay() ? offset : 0 ) ) / 7;
};
function expect(date, ewom, wom) {
return { date: date, exactWeekOfMonth: ewom, weekOfMonth: wom };
}
expectations = [
expect('2024-12-01')
, expect('2024-06-02')
, expect('2024-06-03')
, expect('2024-06-08')
, expect('2024-06-09')
, expect('2024-06-10')
, expect('2024-04-01')
, expect('2024-04-08')
, expect('2024-04-11')
, expect('2024-04-16')
, expect('2024-04-28')
, expect('2024-04-29')
, expect('2024-04-30')
, expect('2024-04-21')
, expect('2024-07-03')
, expect('2024-07-02')
, expect('2024-07-01')
, expect('2024-07-07')
, expect('2024-07-08')
,...