I have a small fascination with calendars,1 including the traditional Japanese calendar, which has a lot of interesting cultural tidbits that aren’t obvious to Westerners. I remember my early years visiting Japan to see my in-laws and pondering every time I sat on the toilet the calendar that was hung up on the wall next to me. You can see an example of the traditional calendar here, or this one from my wife’s parents’ home, taken in 2010:

One of the more interesting cultural oddities you’ll see on many Japanese calendars are small marks like 大安, 仏滅, and 先勝 that repeat over and over in a cycle each month. These are known as the rokuyō (六曜) or “six days” and are related to a small superstition that has persisted since the Edo Period.
Prior to the early-industrial Meiji Period, Japan still used a lunar calendar based on the Chinese model which is now called kyūreki (旧暦) or “the old calendar”. This calendar had twelve months, 30 days each, to reflect the cycles of the moon. Japanese New Year thus originally coincided with Chinese New Year, though the first day of the new lunar year is now related to kyūshōgatsu (旧正月) as new year is observed on January 1st instead.
Anyhow, since the months were all exactly 30 days, the rokuyō were six days that reflected good or bad fortune on that day, mainly related to public events like weddings, funerals, new undertakings, etc. Though, it’s thought that the six days were also used to determine one’s fortune in gambling, too The six days are, in order:
- 先勝 (senshō) – Mornings were thought to be auspicious (lit. “winning first”), but afternoons unlucky.
- 友引 (tomobiki) – Funerals were avoided this day, but private gathering of friends were considered OK. The literal meaning is “friends pulling”.
- 先負 (senbu) – Mornings were thought to be unlucky (lit. “losing first”, but afternoons auspicious.
- 仏滅 (butsumetsu) – This day, literally meaning “death of the Buddha”,2 was thought to be inauspsicous all day.
- 大安 (taian) – Very auspicious days in general. Literally means “great luck”.
- 赤口 (shakkō) – This day was also generally dangerous, though 11am to 1pm was thought to be OK. Literally means “red mouth”. One superstition related to shakkō was that knives were particularly dangerous due to accidents.
The six days simply repeat over and over throughout the old Chinese calendar, but there’s a twist:
- The first day of the 1st and 7th month is always 先勝 (senshō).
- The first day of the 2nd and 8th month is always 友引 (tomobiki).
- The first day of the 3rd and 9th month is always 先負 (senbu).
- …and so on.
So this cycle of six days actually resets at the beginning of a new month. This leads to some interesting outcomes for certain traditional Japanese holidays, particularly the 5 seasonal holidays or sekku, some of which we’ve talked about here in the blog. For example:
- Girls Day is always 大安 (taian). Girls rock, what can I say? 😎
- Childrens Day (originally Boys Day) is always 先負 (senbu). Maybe boys start out awkward, but mature into their own later? 💪🏼
- Tanabata (July 7th), one of my other favorite Japanese holidays, is always 先勝 (senshō). The star-crossed lovers that feature in the story of Tanabata were separated later, so perhaps they were only lucky at first. 💔 (just kidding)
- Day of the Chrysanthemum (Sept. 9th, another holiday we haven’t gone over yet) is always 大安 (taian). Mathematically this makes sense since it is exactly 6 months away from Girls Day.
Further, a couple other traditional holidays such as jūgoya (十五夜, “harvest moon-viewing day”) is always 仏滅 (butsumetsu) and the lesser-known jūsanya (十三夜, “the full moon after harvest moon”) is always 先負 (senbu).
A while back before I had all this figured out, I wrote a small computer program that would execute every time I would log into my computer terminal. Sometimes, I written program this in Python language, sometimes in Ruby, and I might have even tried writing it in Golang at one point, though that version has since been lost.

The current incarnation I use (screenshot above) was written in Ruby language using an object-oriented structure and prints out the Imperial reign name and the rokuyō for the current date. It is genuinely hackey as my Ruby skills are minimal, but I wanted a good exercise for personal practice:
#!/usr/bin/env ruby
# Composed by Doug M
# Details here: https://partycentral.home.blog/
# Terminal colors for the win
class String
def black; "\e[30m#{self}\e[0m" end
def red; "\e[31m#{self}\e[0m" end
def green; "\e[32m#{self}\e[0m" end
def brown; "\e[33m#{self}\e[0m" end
def blue; "\e[34m#{self}\e[0m" end
def magenta; "\e[35m#{self}\e[0m" end
def cyan; "\e[36m#{self}\e[0m" end
def gray; "\e[37m#{self}\e[0m" end
def bg_black; "\e[40m#{self}\e[0m" end
def bg_red; "\e[41m#{self}\e[0m" end
def bg_green; "\e[42m#{self}\e[0m" end
def bg_brown; "\e[43m#{self}\e[0m" end
def bg_blue; "\e[44m#{self}\e[0m" end
def bg_magenta; "\e[45m#{self}\e[0m" end
def bg_cyan; "\e[46m#{self}\e[0m" end
def bg_gray; "\e[47m#{self}\e[0m" end
def bold; "\e[1m#{self}\e[22m" end
def italic; "\e[3m#{self}\e[23m" end
def underline; "\e[4m#{self}\e[24m" end
def blink; "\e[5m#{self}\e[25m" end
def reverse_color; "\e[7m#{self}\e[27m" end
end
# Anchor date for the Lunar calendar (January 25th, 2020)
anchor_day = '01'
anchor_month = '25'
anchor_year = '2020'
# Build a basic Ruby class, with all the dates preloaded and necessary functions.
class CalendarDay
def initialize(current_date)
@day = current_date.strftime("%-d")
@month = current_date.strftime("%B")
@year = current_date.strftime("%Y")
# The ascension date for our script, currently April 1st, 2019
# the coronation of the current Reiwa Emperor
@ascension_day = '01'
@ascension_month = '04'
@ascension_year = '2019'
end
def get_current_date
return "#{@month} #{@day}#{get_ordinal_suffix(@day)}, #{@year}"
end
def get_nengo
# 年号 (nengō) - the current Imperial reign name
nengo = "令和"
# Note, the first year of the Imperial reign is year "1", not "0"
reign_ordinal = (@year.to_i - @ascension_year.to_i)+1
reign_year = "#{reign_ordinal}#{get_ordinal_suffix(reign_ordinal.to_s)} year of #{nengo.cyan}"
return reign_year
end
def get_ordinal_suffix(ordinal)
case ordinal
when '1'
suffix = 'st'
when '21'
suffix = 'st'
when '31'
suffix = 'st'
when '2'
suffix = 'nd'
when '22'
suffix = 'nd'
when '3'
suffix = 'rd'
when '23'
suffix = 'rd'
else
suffix = 'th'
end
return suffix
end
def get_rokuyo
# The basic array with our six days, plus terminal colors.
rokuyo = ['先勝'.blue, '友引'.grey, '先負'.blue, '仏滅'.brown, '大安'.green, '赤口'.bg_red]
# I am not even going to try to explain why this works.
return rokuyo[(@day.to_i + (@month.to_i % 6)) % 6]
end
end
# Grab today's date
d = CalendarDay.new(Time.now)
# Print the actual message
puts "Today is #{d.get_current_date()}, the #{d.get_nengo()}. Today is #{d.get_rokuyo()}."
The trickiest part, by far, is to calculate the actual date. In previous incarnations, I had a bunch of complex processes to make this work with 99% accuracy, though eventually drift would set in. Once I figured out that the 1st day of the month would reset in a fixed pattern, I finally realized that all this was a bunch of modulus math within modulus math:
(day of the month + (month number % 6)) % 6
Anyhow, that’s a brief look at the rokuyo in the Japanese calendar. If you’re technically-inclined, feel free to try out the program above, make improvements, send feedback, whatever.
For everyone else, the six days are a bit of a cultural relic from an earlier time in Japan, and apart from planning weddings and funerals, most people give it no real thought. Me? I like to check it from time to time and see if my day’s experiences matched the day’s fortune (spoiler: it usually doesn’t).
1 Historia Civilis has a fun video on Youtube about the origin of the Julian Calendar and why 44 BCE was the “longest” year in history.
2 The idea of the Buddha’s death and the concept of Nirvana (lit. “unbinding”) is a lengthy subject in Buddhism. Enjoy!