chakokuのブログ(rev4)

テック・コミック・ごくまれにチャリ

定年退職まであと大体1年→定年サポートアプリ(笑)を再ビルド

定年まであと大体1年になった。会社からの再就職サポート開始はまだまだ先なのだが、マッチングがうまくいかない場合は自力で探す必要がある。できたら幅広くアクセスして情報を集めたい。定年までどれぐらいの時間があるのか??把握する必要がある。頭で考えたらわかることだが、数字に弱いので、、定年までの残り期間をサポートするため、定年まで残り何日か、時間でいうと何時間か?を計算して表示するアプリを数年前に試作した*1*2。さらに、曜日に応じて元気づけるメッセージが表示される機能付き(笑)。試作した後は放置していたので、改めてビルドしてTestFlightで自分のスマフォに入れた。

簡単すぎて参考になるレベルではないと思いますが、ご参考にソースを貼り付けます。

//
//  ViewController.swift
//  simpleUI
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        //outputLabel.text = "Hello world?"
        //lestTime.text = "MM:YY"
        update()
    }
    func update(){
        let formatter = DateFormatter()
        formatter.locale = Locale(identifier: "ja_JP")
        formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "ydMMMEEEhm", options: 0, locale: Locale(identifier: "ja_JP"))
        todayYMD.text = formatter.string(from: Date())
        
        //todayYMD.text = "2019/2/2 02:24"
        lestTime.text = "4y12m"
        lestMonthLabel.text = "123m"
        lestDayLabel.text = "12345days"
        lestHourLabel.text = "2342323H"
        messageArea.text = "健康の秘訣:よく寝て食8分目"
        calcLestDate()
        showMessage()
    }
    func showMessage()
    {
        let week = Calendar(identifier: Calendar.Identifier.gregorian).dateComponents([.weekday],from:Date()).weekday
        messageArea.text = getWeekMsg(week: week!)
    }
    func getWeekMsg(week: Int)-> String
    {
        var msg = ""
        let msgOfWeek = [
            1: ["日曜日いかがお過ごしですか",
                "掃除とか片付けすると気持ちもリフレッシュしますよ",
                "休みの日には、何か趣味に打ち込んでみるのもいいかもしれませんね",
                "明日からの一週間に備えて今日は十分リフレッシュしましょう。仕事の事をあれこれ考えすぎないようにしましょう。体を動かすのもいいですね。"],
            2: ["月曜日になりましたが、ゆっくり調子を戻しましょう。月曜日は会社に来ただけで十分!。。等と言ってられませんか",
                "月曜日は気が重いですか?考えすぎないのが一番ですよ。案ずるよりなんとやら"],
            3: ["火曜日になりましたが、調子は戻ってきましたか?金田だと「やっとエンジンが暖まってきたぜ」と言いそうですね",
                "火曜日になりましたが調子はいかがですか。無理せず一週間をこなしましょう"],
            4: ["今日は水曜、一週間の、なか日ですね。ちょっと一息しましょうか",
                "水曜日はたまに早く帰ってみるのもいいかも"],
            5: ["一週間の後半、木曜日になりましたね。今日は調子いかがですか?",
                "木曜日ですが調子はいかがですか"],
            6: ["やっと金曜日まできましたね!! 今日1日頑張りましょう。明日からお休みですね!",
                "今日は金曜日!お疲れ様です!"],
            7: ["やっと休みになりましたね。一週間お疲れ様でした。今日はちょっと夜更かしですか?",
                "一週間お疲れ様でした。土曜日だからといって、あまり生活リズムを変えない方が体調管理のためにはいいそうですよ",
                "今日はどこかにお出かけですか?",
                "とりあえず、ゆっくりしましょう"
            ]]
        msg = msgOfWeek[week]!.randomElement()!
        return msg
    }
    func calcLestDate()
    {
        let complete = "2023/7/31 17:30:00"   //  (例)勤務最終日
    
        let dateFormatter = DateFormatter()
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        dateFormatter.dateFormat =  "yyyy/MM/dd HH:mm:ss"
        let cmplDate = dateFormatter.date(from: complete)
    
        let calendar = Calendar(identifier: .gregorian)
        let today:Date = Date()
    
        var components = calendar.dateComponents([.year, .month], from: today , to: cmplDate!)
            lestTime.text = String(components.year!) + "年と" + String(components.month!) + "ヶ月"
    
        components = calendar.dateComponents([ .month], from: today , to: cmplDate!)
        //let month = components.month!
        //print(month*7/10)

        lestMonthLabel.text = String(components.month!) + "ヶ月"
        components = calendar.dateComponents([ .day], from: today , to: cmplDate!)
        lestDayLabel.text = String(components.day!*68/100) + "日"
    
        components = calendar.dateComponents([ .hour], from: today , to: cmplDate!)
        lestHourLabel.text = String(components.hour!*68*8/100/24) + "時間"
    }
    
    @IBAction func checkBtn(_ sender: Any) {
        update()
    }
    @IBAction func showNextWord(_ sender: Any) {
        showMessage()
    }
    @IBOutlet weak var messageArea: UILabel!
    @IBOutlet weak var lestTime: UILabel!
    @IBOutlet weak var todayYMD: UILabel!
    @IBOutlet weak var outputLabel: UILabel!
    @IBOutlet weak var lestMonthLabel: UILabel!
    @IBOutlet weak var lestDayLabel: UILabel!
    @IBOutlet weak var lestHourLabel: UILabel!

    @IBAction func settingButtonAction(_ sender: Any) {
        performSegue(withIdentifier: "goSetting", sender: nil)    }
}

■追記
今はもうSwift全然触っていないし、Flutterでしかコードを書けないので、機能アップする場合はFlutterに引っ越しが必要。だけどまぁ、残り勤務日数さえ出たらいいかと。

*1:勤務日数の計算は正確に行おうとするとめちゃくちゃ大変なので、ざっくり7かけで計算

*2:なぜ数年前に作ったか?仕事がしんどいから、定年まであと何日かを数えて気持ちを紛らわしていた。申し訳ない