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')
,...