Skip to content

Instantly share code, notes, and snippets.

@eienf
Created May 3, 2021 09:48
Show Gist options
  • Select an option

  • Save eienf/1dbc802ce8f5e214237657e056c8ddc8 to your computer and use it in GitHub Desktop.

Select an option

Save eienf/1dbc802ce8f5e214237657e056c8ddc8 to your computer and use it in GitHub Desktop.

Revisions

  1. eienf created this gist May 3, 2021.
    71 changes: 71 additions & 0 deletions jyear.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,71 @@
    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)