xxxxxxxxxx
772
let seasons = createSeasonArray();
let now = new Date();
let colorMap = {
Summer : "#fafa6e",
Fall : "#5a2a36",
Winter : "#a4a2c9",
Spring : "#00ef82"
};
let colorArray; //will hold 72 interpolated colors
let v0, v1;
let shadow;
function preload() {
shadow = loadImage("assets/Blur.png");
}
function setup() {
createCanvas(800, 800);
//noLoop();
print("Example season entry:");
print(seasons[0]);
textFont('Times New Roman');
textSize(20);
noStroke();
fill(32);
colorMode(HSB);
colorArray = initColors();
print(colorArray.length);
v0 = createVector(width/2, 0);
v1 = createVector(0, 0);
imageMode(CENTER);
}
function draw() {
let i=0;
//i = min(int(mouseX/width * seasons.length), seasons.length-1); //use mouse to scrub through data, linear
//radial mouse position:
v1.set(mouseX-width/2, mouseY - height/2);
let a = v0.angleBetween(v1);
if (a<0) a = TWO_PI + a;
if (!Number.isNaN(a)) {
i = min(int(a/TWO_PI * seasons.length), seasons.length-1);
}
let dr = parseDateRange(seasons[i]);
background(colorArray[i]);
if (brightness(colorArray[i]) > 80) fill(0);
else fill(255);
displaySeason(i);
if (dateInRange(now.getMonth(), now.getDate(), dr)) {
ellipse(width/2, 50, 100, 100);
}
translate(width/2, height/2);
image(shadow, 0, 0);
drawSeasonWheel(300, i);
}
function drawSeasonWheel(r, index) {
//lowest z layer: 72 microseasons:
let angleStep = TWO_PI/72;
let theta = 0;
for (let i=0; i<72; i++) {
let a = theta - angleStep/2,
b = theta + angleStep/2;
stroke(colorArray[i]);
fill(colorArray[i]);
let rTemp = r;
if (i == index) {
rTemp *= 1.25;
}
beginShape();
vertex(0,0);
vertex(cos(a)*rTemp, sin(a)*rTemp);
vertex(cos(b)*rTemp, sin(b)*rTemp);
vertex(0,0);
endShape();
theta+=angleStep;
}
//24 miniseasons
image(shadow, 0, 0, 600, 600);
angleStep = TWO_PI/24;
theta = 0;
for (let i=0; i<24; i++) {
let a = theta - angleStep/2,
b = theta + angleStep/2;
stroke(colorArray[i*3]);
fill(colorArray[i*3]);
let rTemp = 3*r/4;
beginShape();
vertex(0,0);
vertex(cos(a)*rTemp, sin(a)*rTemp);
vertex(cos(b)*rTemp, sin(b)*rTemp);
vertex(0,0);
endShape();
theta+=angleStep;
}
//4 seasons
image(shadow, 0, 0, 300, 300);
angleStep = TWO_PI/4;
theta = 0;
for (let i=0; i<4; i++) {
let a = theta - angleStep/2,
b = theta + angleStep/2;
stroke(colorArray[i*18]);
fill(colorArray[i*18]);
let rTemp = r/2;
beginShape();
vertex(0,0);
vertex(cos(a)*rTemp, sin(a)*rTemp);
vertex(cos(b)*rTemp, sin(b)*rTemp);
vertex(0,0);
endShape();
theta+=angleStep;
}
}
//create an array of microseasonal colors derrived from 4 main season colors
//for now, rely on fact that we know microseason order to associate with colors
function initColors() {
let ca = [];
for (let i=0; i<18; i++) {
let c1 = color(colorMap.Spring);
let c2 = color(colorMap.Summer);
ca.push(lerpColor(c1, c2, i/12));
}
for (let i=0; i<18; i++) {
let c1 = color(colorMap.Summer);
let c2 = color(colorMap.Fall);
ca.push(lerpColor(c1, c2, i/12));
}
for (let i=0; i<18; i++) {
let c1 = color(colorMap.Fall);
let c2 = color(colorMap.Winter);
ca.push(lerpColor(c1, c2, i/12));
}
for (let i=0; i<18; i++) {
let c1 = color(colorMap.Winter);
let c2 = color(colorMap.Spring);
ca.push(lerpColor(c1, c2, i/12));
}
return ca;
}
function getNextSeason(s) {
switch (s) {
case "Spring": return "Summer";
case "Summer": return "Fall";
case "Fall": return "Winter";
case "Winter": return "Spring";
}
return "Spring"; //bad input default
}
//Maybe a handy library like https://momentjs.com/
//or https://www.skypack.dev/view/dayjs would help handle date tests but
//can prob get away with something diy and simple for now
const months = {
January : '00',
February: '01',
March : '02',
April : '03',
May : '04',
June : '05',
July : '06',
August : '07',
September:'08',
October : '09',
November: '10',
December: '11',
}
function monthNameToNumber(m) {
return int(months[m]); //name to number
}
//determine if m/d is in date range
function dateInRange(m, d, dr) {
let inRange = false;
if (dr.startMonthNumber == dr.endMonthNumber) {
//start and end dates are same month, easy:
if (m == dr.startMonthNumber &&
(d >= dr.startDay && d <= dr.endDay)) inRange = true;
} else {
//start and end months are different, handle w/ care!
if (m == dr.startMonthNumber) {
if (d >= dr.startDay) inRange = true;
} else {
if (d <= dr.endDay) inRange = true;
}
}
return inRange;
}
//make sure we can read one
function displaySeason(i) {
text(seasons[i].season, 10, 20);
text(seasons[i].miniseason, 10, 40);
text(seasons[i].dateRange, 10, 60);
text(seasons[i].microseasonJapanese, 10, 80);
text(seasons[i].microseasonEnglishTranslation, 10, 100);
}
function displayDateRange(dr) {
text((dr.startMonthNumber+1) + "/" +
dr.startDay + " - " +
(dr.endMonthNumber+1) + "/" +
dr.endDay,
10, 20);
}
//Takes a date string e.g 'Month X-Y' OR MonthA X-MonthB-Y and return a parsed json object
function parseDateRange(s) {
let startMonth, endMonth, startDay, endDay;
let ds = s.dateRange;
//test to see which kind of date format we're dealing with (one- or two-month)
if (ds.indexOf(' ') == ds.lastIndexOf(' ')) {
//one space, one month
//print (ds + " has one month");
let m = ds.split(" ")[0];
//print(m);
startMonth = m;
endMonth = m;
let d = ds.split(" ")[1];
//print(d);
let days = d.split("–"); // Note JSON exported w/ special emdash, this:'–' not:'-' (what types)
startDay = days[0];
endDay = days[1];
//print(startDay + ", " + endDay);
} else {
//two spaces, two months
//print (ds + " has two months");
let dates = ds.split("–");
startMonth = dates[0].split(" ")[0];
startDay = dates[0].split(" ")[1];
endMonth = dates[1].split(" ")[0];
endDay = dates[1].split(" ")[1];
//print(startMonth + " " + startDay + " to " + endMonth + " " + endDay);
}
return {"startMonth": startMonth,
"startMonthNumber" : monthNameToNumber(startMonth),
"startDay" : startDay,
"endMonth" : endMonth,
"endMonthNumber" : monthNameToNumber(endMonth),
"endDay" : endDay
};
}
//From: https://www.nippon.com/en/features/h00124/
//A cut and paste the table there into a spreadsheet,
//cleaned it up, and exported as a json object using
//https://thenewstack.io/how-to-convert-google-spreadsheet-to-json-formatted-text/
function createSeasonArray() {
return [
{
"season": "Spring",
"miniseason": "春分 Shunbun (Spring equinox)",
"dateRange": "March 21–25",
"microseasonJapanese": "雀始巣 Suzume hajimete sukū",
"microseasonEnglishTranslation": "Sparrows start to nest"
},
{
"season": "Spring",
"miniseason": "春分 Shunbun (Spring equinox)",
"dateRange": "March 26–30",
"microseasonJapanese": "櫻始開 Sakura hajimete saku",
"microseasonEnglishTranslation": "First cherry blossoms"
},
{
"season": "Spring",
"miniseason": "春分 Shunbun (Spring equinox)",
"dateRange": "March 31–April 4",
"microseasonJapanese": "雷乃発声 Kaminari sunawachi koe o hassu",
"microseasonEnglishTranslation": "Distant thunder"
},
{
"season": "Spring",
"miniseason": "清明 Seimei (Pure and clear)",
"dateRange": "April 5–9",
"microseasonJapanese": "玄鳥至 Tsubame kitaru",
"microseasonEnglishTranslation": "Swallows return"
},
{
"season": "Spring",
"miniseason": "清明 Seimei (Pure and clear)",
"dateRange": "April 10–14",
"microseasonJapanese": "鴻雁北 Kōgan kaeru",
"microseasonEnglishTranslation": "Wild geese fly north"
},
{
"season": "Spring",
"miniseason": "清明 Seimei (Pure and clear)",
"dateRange": "April 15–19",
"microseasonJapanese": "虹始見 Niji hajimete arawaru",
"microseasonEnglishTranslation": "First rainbows"
},
{
"season": "Spring",
"miniseason": "穀雨 Kokuu (Grain rains)",
"dateRange": "April 20–24",
"microseasonJapanese": "葭始生 Ashi hajimete shōzu",
"microseasonEnglishTranslation": "First reeds sprout"
},
{
"season": "Spring",
"miniseason": "穀雨 Kokuu (Grain rains)",
"dateRange": "April 25–29",
"microseasonJapanese": "霜止出苗 Shimo yamite nae izuru",
"microseasonEnglishTranslation": "Last frost, rice seedlings grow"
},
{
"season": "Spring",
"miniseason": "穀雨 Kokuu (Grain rains)",
"dateRange": "April 30–May 4",
"microseasonJapanese": "牡丹華 Botan hana saku",
"microseasonEnglishTranslation": "Peonies bloom"
},
{
"season": "Spring",
"miniseason": "立夏 Rikka (Beginning of summer)",
"dateRange": "May 5–9",
"microseasonJapanese": "蛙始鳴 Kawazu hajimete naku",
"microseasonEnglishTranslation": "Frogs start singing"
},
{
"season": "Spring",
"miniseason": "立夏 Rikka (Beginning of summer)",
"dateRange": "May 10–14",
"microseasonJapanese": "蚯蚓出 Mimizu izuru",
"microseasonEnglishTranslation": "Worms surface"
},
{
"season": "Spring",
"miniseason": "立夏 Rikka (Beginning of summer)",
"dateRange": "May 15–20",
"microseasonJapanese": "竹笋生 Takenoko shōzu",
"microseasonEnglishTranslation": "Bamboo shoots sprout"
},
{
"season": "Spring",
"miniseason": "小満 Shōman (Lesser ripening)",
"dateRange": "May 21–25",
"microseasonJapanese": "蚕起食桑 Kaiko okite kuwa o hamu",
"microseasonEnglishTranslation": "Silkworms start feasting on mulberry leaves"
},
{
"season": "Spring",
"miniseason": "小満 Shōman (Lesser ripening)",
"dateRange": "May 26–30",
"microseasonJapanese": "紅花栄 Benibana sakau",
"microseasonEnglishTranslation": "Safflowers bloom"
},
{
"season": "Spring",
"miniseason": "小満 Shōman (Lesser ripening)",
"dateRange": "May 31–June 5",
"microseasonJapanese": "麦秋至 Mugi no toki itaru",
"microseasonEnglishTranslation": "Wheat ripens and is harvested"
},
{
"season": "Spring",
"miniseason": "芒種 Bōshu (Grain beards and seeds)",
"dateRange": "June 6–10",
"microseasonJapanese": "蟷螂生 Kamakiri shōzu",
"microseasonEnglishTranslation": "Praying mantises hatch"
},
{
"season": "Spring",
"miniseason": "芒種 Bōshu (Grain beards and seeds)",
"dateRange": "June 11–15",
"microseasonJapanese": "腐草為螢 Kusaretaru kusa hotaru to naru",
"microseasonEnglishTranslation": "Rotten grass becomes fireflies"
},
{
"season": "Spring",
"miniseason": "芒種 Bōshu (Grain beards and seeds)",
"dateRange": "June 16–20",
"microseasonJapanese": "梅子黄 Ume no mi kibamu",
"microseasonEnglishTranslation": "Plums turn yellow"
},
{
"season": "Summer",
"miniseason": "夏至 Geshi (Summer solstice)",
"dateRange": "June 21–26",
"microseasonJapanese": "乃東枯 Natsukarekusa karuru",
"microseasonEnglishTranslation": "Self-heal withers"
},
{
"season": "Summer",
"miniseason": "夏至 Geshi (Summer solstice)",
"dateRange": "June 27–July 1",
"microseasonJapanese": "菖蒲華 Ayame hana saku",
"microseasonEnglishTranslation": "Irises bloom"
},
{
"season": "Summer",
"miniseason": "夏至 Geshi (Summer solstice)",
"dateRange": "July 2–6",
"microseasonJapanese": "半夏生 Hange shōzu",
"microseasonEnglishTranslation": "Crow-dipper sprouts"
},
{
"season": "Summer",
"miniseason": "小暑 Shōsho (Lesser heat)",
"dateRange": "July 7–11",
"microseasonJapanese": "温風至 Atsukaze itaru",
"microseasonEnglishTranslation": "Warm winds blow"
},
{
"season": "Summer",
"miniseason": "小暑 Shōsho (Lesser heat)",
"dateRange": "July 12–16",
"microseasonJapanese": "蓮始開 Hasu hajimete hiraku",
"microseasonEnglishTranslation": "First lotus blossoms"
},
{
"season": "Summer",
"miniseason": "小暑 Shōsho (Lesser heat)",
"dateRange": "July 17–22",
"microseasonJapanese": "鷹乃学習 Taka sunawachi waza o narau",
"microseasonEnglishTranslation": "Hawks learn to fly"
},
{
"season": "Summer",
"miniseason": "大暑 Taisho (Greater heat)",
"dateRange": "July 23–28",
"microseasonJapanese": "桐始結花 Kiri hajimete hana o musubu",
"microseasonEnglishTranslation": "Paulownia trees produce seeds"
},
{
"season": "Summer",
"miniseason": "大暑 Taisho (Greater heat)",
"dateRange": "July 29–August 2",
"microseasonJapanese": "土潤溽暑 Tsuchi uruōte mushi atsushi",
"microseasonEnglishTranslation": "Earth is damp, air is humid"
},
{
"season": "Summer",
"miniseason": "大暑 Taisho (Greater heat)",
"dateRange": "August 3–7",
"microseasonJapanese": "大雨時行 Taiu tokidoki furu",
"microseasonEnglishTranslation": "Great rains sometimes fall"
},
{
"season": "Summer",
"miniseason": "立秋 Risshū (Beginning of autumn)",
"dateRange": "August 8–12",
"microseasonJapanese": "涼風至 Suzukaze itaru",
"microseasonEnglishTranslation": "Cool winds blow"
},
{
"season": "Summer",
"miniseason": "立秋 Risshū (Beginning of autumn)",
"dateRange": "August 13–17",
"microseasonJapanese": "寒蝉鳴 Higurashi naku",
"microseasonEnglishTranslation": "Evening cicadas sing"
},
{
"season": "Summer",
"miniseason": "立秋 Risshū (Beginning of autumn)",
"dateRange": "August 18–22",
"microseasonJapanese": "蒙霧升降 Fukaki kiri matō",
"microseasonEnglishTranslation": "Thick fog descends"
},
{
"season": "Summer",
"miniseason": "処暑 Shosho (Manageable heat)",
"dateRange": "August 23–27",
"microseasonJapanese": "綿柎開 Wata no hana shibe hiraku",
"microseasonEnglishTranslation": "Cotton flowers bloom"
},
{
"season": "Summer",
"miniseason": "処暑 Shosho (Manageable heat)",
"dateRange": "August 28–September 1",
"microseasonJapanese": "天地始粛 Tenchi hajimete samushi",
"microseasonEnglishTranslation": "Heat starts to die down"
},
{
"season": "Summer",
"miniseason": "処暑 Shosho (Manageable heat)",
"dateRange": "September 2–7",
"microseasonJapanese": "禾乃登 Kokumono sunawachi minoru",
"microseasonEnglishTranslation": "Rice ripens"
},
{
"season": "Summer",
"miniseason": "白露 Hakuro (White dew)",
"dateRange": "September 8–12",
"microseasonJapanese": "草露白 Kusa no tsuyu shiroshi",
"microseasonEnglishTranslation": "Dew glistens white on grass"
},
{
"season": "Summer",
"miniseason": "白露 Hakuro (White dew)",
"dateRange": "September 13–17",
"microseasonJapanese": "鶺鴒鳴 Sekirei naku",
"microseasonEnglishTranslation": "Wagtails sing"
},
{
"season": "Summer",
"miniseason": "白露 Hakuro (White dew)",
"dateRange": "September 18–22",
"microseasonJapanese": "玄鳥去 Tsubame saru",
"microseasonEnglishTranslation": "Swallows leave"
},
{
"season": "Fall",
"miniseason": "秋分 Shūbun (Autumn equinox)",
"dateRange": "September 23–27",
"microseasonJapanese": "雷乃収声 Kaminari sunawachi koe o osamu",
"microseasonEnglishTranslation": "Thunder ceases"
},
{
"season": "Fall",
"miniseason": "秋分 Shūbun (Autumn equinox)",
"dateRange": "September 28–October 2",
"microseasonJapanese": "蟄虫坏戸 Mushi kakurete to o fusagu",
"microseasonEnglishTranslation": "Insects hole up underground"
},
{
"season": "Fall",
"miniseason": "秋分 Shūbun (Autumn equinox)",
"dateRange": "October 3–7",
"microseasonJapanese": "水始涸 Mizu hajimete karuru",
"microseasonEnglishTranslation": "Farmers drain fields"
},
{
"season": "Fall",
"miniseason": "寒露 Kanro (Cold dew)",
"dateRange": "October 8–12",
"microseasonJapanese": "鴻雁来 Kōgan kitaru",
"microseasonEnglishTranslation": "Wild geese return"
},
{
"season": "Fall",
"miniseason": "寒露 Kanro (Cold dew)",
"dateRange": "October 13–17",
"microseasonJapanese": "菊花開 Kiku no hana hiraku",
"microseasonEnglishTranslation": "Chrysanthemums bloom"
},
{
"season": "Fall",
"miniseason": "寒露 Kanro (Cold dew)",
"dateRange": "October 18–22",
"microseasonJapanese": "蟋蟀在戸 Kirigirisu to ni ari",
"microseasonEnglishTranslation": "Crickets chirp around the door"
},
{
"season": "Fall",
"miniseason": "霜降 Sōkō (Frost falls)",
"dateRange": "October 23–27",
"microseasonJapanese": "霜始降 Shimo hajimete furu",
"microseasonEnglishTranslation": "First frost"
},
{
"season": "Fall",
"miniseason": "霜降 Sōkō (Frost falls)",
"dateRange": "October 28–November 1",
"microseasonJapanese": "霎時施 Kosame tokidoki furu",
"microseasonEnglishTranslation": "Light rains sometimes fall"
},
{
"season": "Fall",
"miniseason": "霜降 Sōkō (Frost falls)",
"dateRange": "November 2–6",
"microseasonJapanese": "楓蔦黄 Momiji tsuta kibamu",
"microseasonEnglishTranslation": "Maple leaves and ivy turn yellow"
},
{
"season": "Fall",
"miniseason": "立冬 Rittō (Beginning of winter)",
"dateRange": "November 7–11",
"microseasonJapanese": "山茶始開 Tsubaki hajimete hiraku",
"microseasonEnglishTranslation": "Camellias bloom"
},
{
"season": "Fall",
"miniseason": "立冬 Rittō (Beginning of winter)",
"dateRange": "November 12–16",
"microseasonJapanese": "地始凍 Chi hajimete kōru",
"microseasonEnglishTranslation": "Land starts to freeze"
},
{
"season": "Fall",
"miniseason": "立冬 Rittō (Beginning of winter)",
"dateRange": "November 17–21",
"microseasonJapanese": "金盞香 Kinsenka saku",
"microseasonEnglishTranslation": "Daffodils bloom"
},
{
"season": "Fall",
"miniseason": "小雪 Shōsetsu (Lesser snow)",
"dateRange": "November 22–26",
"microseasonJapanese": "虹蔵不見 Niji kakurete miezu",
"microseasonEnglishTranslation": "Rainbows hide"
},
{
"season": "Fall",
"miniseason": "小雪 Shōsetsu (Lesser snow)",
"dateRange": "November 27–December 1",
"microseasonJapanese": "朔風払葉 Kitakaze konoha o harau",
"microseasonEnglishTranslation": "North wind blows the leaves from the trees"
},
{
"season": "Fall",
"miniseason": "小雪 Shōsetsu (Lesser snow)",
"dateRange": "December 2–6",
"microseasonJapanese": "橘始黄 Tachibana hajimete kibamu",
"microseasonEnglishTranslation": "Tachibana citrus tree leaves start to turn yellow"
},
{
"season": "Fall",
"miniseason": "大雪 Taisetsu (Greater snow)",
"dateRange": "December 7–11",
"microseasonJapanese": "閉塞成冬 Sora samuku fuyu to naru",
"microseasonEnglishTranslation": "Cold sets in, winter begins"
},
{
"season": "Fall",
"miniseason": "大雪 Taisetsu (Greater snow)",
"dateRange": "December 12–16",
"microseasonJapanese": "熊蟄穴 Kuma ana ni komoru",
"microseasonEnglishTranslation": "Bears start hibernating in their dens"
},
{
"season": "Fall",
"miniseason": "大雪 Taisetsu (Greater snow)",
"dateRange": "December 17–21",
"microseasonJapanese": "鱖魚群 Sake no uo muragaru",
"microseasonEnglishTranslation": "Salmon gather and swim upstream"
},
{
"season": "Winter",
"miniseason": "冬至 Tōji (Winter solstice)",
"dateRange": "December 22–26",
"microseasonJapanese": "乃東生 Natsukarekusa shōzu",
"microseasonEnglishTranslation": "Self-heal sprouts"
},
{
"season": "Winter",
"miniseason": "冬至 Tōji (Winter solstice)",
"dateRange": "December 27–31",
"microseasonJapanese": "麋角解 Sawashika no tsuno otsuru",
"microseasonEnglishTranslation": "Deer shed antlers"
},
{
"season": "Winter",
"miniseason": "冬至 Tōji (Winter solstice)",
"dateRange": "January 1–4",
"microseasonJapanese": "雪下出麦 Yuki watarite mugi nobiru",
"microseasonEnglishTranslation": "Wheat sprouts under snow"
},
{
"season": "Winter",
"miniseason": "小寒 Shōkan (Lesser cold)",
"dateRange": "January 5–9",
"microseasonJapanese": "芹乃栄 Seri sunawachi sakau",
"microseasonEnglishTranslation": "Parsley flourishes"
},
{
"season": "Winter",
"miniseason": "小寒 Shōkan (Lesser cold)",
"dateRange": "January 10–14",
"microseasonJapanese": "水泉動 Shimizu atataka o fukumu",
"microseasonEnglishTranslation": "Springs thaw"
},
{
"season": "Winter",
"miniseason": "小寒 Shōkan (Lesser cold)",
"dateRange": "January 15–19",
"microseasonJapanese": "雉始雊 Kiji hajimete naku",
"microseasonEnglishTranslation": "Pheasants start to call"
},
{
"season": "Winter",
"miniseason": "大寒 Daikan (Greater cold)",
"dateRange": "January 20–24",
"microseasonJapanese": "款冬華 Fuki no hana saku",
"microseasonEnglishTranslation": "Butterburs bud"
},
{
"season": "Winter",
"miniseason": "大寒 Daikan (Greater cold)",
"dateRange": "January 25–29",
"microseasonJapanese": "水沢腹堅 Sawamizu kōri tsumeru",
"microseasonEnglishTranslation": "Ice thickens on streams"
},
{
"season": "Winter",
"miniseason": "大寒 Daikan (Greater cold)",
"dateRange": "January 30–February 3",
"microseasonJapanese": "鶏始乳 Niwatori hajimete toya ni tsuku",
"microseasonEnglishTranslation": "Hens start laying eggs"
},
{
"season": "Winter",
"miniseason": "立春 Risshun (Beginning of spring)",
"dateRange": "February 4–8",
"microseasonJapanese": "東風解凍 Harukaze kōri o toku",
"microseasonEnglishTranslation": "East wind melts the ice"
},
{
"season": "Winter",
"miniseason": "立春 Risshun (Beginning of spring)",
"dateRange": "February 9–13",
"microseasonJapanese": "黄鶯睍睆 Kōō kenkan su",
"microseasonEnglishTranslation": "Bush warblers start singing in the mountains"
},
{
"season": "Winter",
"miniseason": "立春 Risshun (Beginning of spring)",
"dateRange": "February 14–18",
"microseasonJapanese": "魚上氷 Uo kōri o izuru",
"microseasonEnglishTranslation": "Fish emerge from the ice"
},
{
"season": "Winter",
"miniseason": "雨水 Usui (Rainwater)",
"dateRange": "February 19–23",
"microseasonJapanese": "土脉潤起 Tsuchi no shō uruoi okoru",
"microseasonEnglishTranslation": "Rain moistens the soil"
},
{
"season": "Winter",
"miniseason": "雨水 Usui (Rainwater)",
"dateRange": "February 24–28",
"microseasonJapanese": "霞始靆 Kasumi hajimete tanabiku",
"microseasonEnglishTranslation": "Mist starts to linger"
},
{
"season": "Winter",
"miniseason": "雨水 Usui (Rainwater)",
"dateRange": "March 1–5",
"microseasonJapanese": "草木萌動 Sōmoku mebae izuru",
"microseasonEnglishTranslation": "Grass sprouts, trees bud"
},
{
"season": "Winter",
"miniseason": "啓蟄 Keichitsu (Insects awaken)",
"dateRange": "March 6–10",
"microseasonJapanese": "蟄虫啓戸 Sugomori mushito o hiraku",
"microseasonEnglishTranslation": "Hibernating insects surface"
},
{
"season": "Winter",
"miniseason": "啓蟄 Keichitsu (Insects awaken)",
"dateRange": "March 11–15",
"microseasonJapanese": "桃始笑 Momo hajimete saku",
"microseasonEnglishTranslation": "First peach blossoms"
},
{
"season": "Winter",
"miniseason": "啓蟄 Keichitsu (Insects awaken)",
"dateRange": "March 16–20",
"microseasonJapanese": "菜虫化蝶 Namushi chō to naru",
"microseasonEnglishTranslation": "Caterpillars become butterflies"
}
];
}