Skip to content

Instantly share code, notes, and snippets.

@eienf
Created May 3, 2021 09:48
Show Gist options
  • Save eienf/1dbc802ce8f5e214237657e056c8ddc8 to your computer and use it in GitHub Desktop.
Save eienf/1dbc802ce8f5e214237657e056c8ddc8 to your computer and use it in GitHub Desktop.
print gregorian calendar year with japanease calendar year
import Foundation
//
// print gregorian calendar year with japanease calendar year
// siwftc -o jyear jyear.swift
// ./jyear startYearInGregorianCalendar // (-length 10)
// ./jyear startYearInGregorianCalendar -length years
// ./jyear startYearInGregorianCalendar stopYearInGregorianCalendar
//
let japanease = Calendar(identifier: .japanese)
let gregorian = Calendar(identifier: .gregorian)
let locale = Locale(identifier: "ja")
let format = DateFormatter()
format.calendar = japanease
format.dateFormat = "Gy年"
format.locale = locale
func print(year:Int) {
let comp = DateComponents(calendar: gregorian, era: 1, year: year, month: 1, day: 1)
guard let date = comp.date else {
return
}
let string = format.string(from: date)
let gYear = gregorian.component(.year, from: date)
print("\(gYear)年\t"+string)
}
func printYears(startYear:Int, stopYear:Int) {
for year in startYear...stopYear {
print(year:year)
}
}
var startYear = 2001
var length = 10
let argv = ProcessInfo.processInfo.arguments
// print("count = \(argv.count)")
if argv.count > 1 {
let value = Int(argv[1])!
if value < 2100 && value > 645 {
startYear = value
}
}
if argv.count > 2 {
if argv[2] == "-length" {
if argv.count > 3 {
if let value = Int(argv[3]) {
if value > 0 {
length = value
}
}
}
} else {
let value = Int(argv[2])!
if value < 2100 && value > 645 {
let stopYear = value
if stopYear > startYear {
length = stopYear - startYear
}
}
}
}
printYears(startYear: startYear, stopYear: startYear+length)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment