iT邦幫忙

0

[SwiftUI] 如何讓 DatePicker所選到的日期,指定成可計算的整數變數

  • 分享至 

  • xImage

請問要如何使用 DatePicker 選了一個日期之後,然後將選到的日期的年月日分別指定成不同的變數?
例如:選到的日期是 2021/11/23
要怎麼實現 Y=2021, M=11, D=23,然後可以做Y+M+D=2055這樣的數字運算呢?
非常感謝!

bill iT邦新手 5 級 ‧ 2021-11-23 11:17:22 檢舉
可以試看看split再轉Int
timestamp
mohri iT邦新手 5 級 ‧ 2021-11-23 14:58:06 檢舉
謝謝bill 和 japhenchen 的提示,我是超新的程式小白,還需要摸索一下怎麼使用這些指令
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
海綿寶寶
iT邦大神 1 級 ‧ 2021-11-23 11:25:16
最佳解答

https://ithelp.ithome.com.tw/upload/images/20211123/20001787KMOsqyd64J.png

下載第一個 project

修改其中一段

//
// From SwiftUI by Example by Paul Hudson
// https://www.hackingwithswift.com/quick-start/swiftui
//
// You're welcome to use this code for any purpose,
// commercial or otherwise, with or without attribution.
//

import SwiftUI

struct ContentView: View {
    @State private var birthDate = Date()

    let calendar = Calendar.current
    let dateFormatter: DateFormatter = {
            let formatter = DateFormatter()
            formatter.dateStyle = .long
            return formatter
    }()
    
    var body: some View {
        VStack {
            DatePicker(selection: $birthDate, in: ...Date(), displayedComponents: .date) {
                Text("Select a date")
            }

            Text("Date is \(birthDate, formatter:dateFormatter) and sum is :\(calendar.dateComponents([.year], from: birthDate).year!+calendar.dateComponents([.month], from: birthDate).month!+calendar.dateComponents([.day], from: birthDate).day!)")
        }
    }
}
mohri iT邦新手 5 級 ‧ 2021-11-23 14:57:34 檢舉

謝謝海綿寶寶大神的解答,順利可以作計算了!

問題解決就好

mohri iT邦新手 5 級 ‧ 2021-11-23 18:29:32 檢舉

不好意思,再請教一個問題。
我想做陽曆轉農曆,找到了以下的程式碼可以實現,但得到的是日期是String格式。
我想提取這個農曆的年月日,做同樣的數學運算,請問該怎麼寫才可以呢?
非常感謝!

    func solarToLunar(year: Int, month: Int, day: Int) -> String {
            //初始化公曆
            let solarCalendar = Calendar.init(identifier: .gregorian)
            var components = DateComponents()
            components.year = year
            components.month = month
            components.day = day
            components.hour = 12
            components.minute = 0
            components.second = 0
            components.timeZone = TimeZone.init(secondsFromGMT: 60 * 60 * 8)
            let solarDate = solarCalendar.date(from: components)
            //初始化農曆
            let lunarCalendar = Calendar.init(identifier: .chinese)
            //日期格式和輸出
            let formatter = DateFormatter()
            //formatter.locale = Locale(identifier: "zh_TW")
            formatter.dateStyle = .medium
            formatter.calendar = lunarCalendar
            return formatter.string(from: solarDate!)
    }

我要發表回答

立即登入回答