【问题标题】:How can I get current time in Swift (Xcode11.1)如何在 Swift (Xcode 11.1) 中获取当前时间
【发布时间】:2020-02-05 03:51:40
【问题描述】:

我做了一个简单的报警应用程序。 在 Swift4 或 swift 获得主情节提要时,我可以使用 dateformatter 获取当前时间。 但现在我得到了 Xcode(v.11.1),我不能使用 dateformatter。 我的代码很简单,我是初学者。 如果我以这种方式编写代码,我会遇到 6 个问题。

一行中的连续声明必须用';'分隔

函数声明的参数列表中应为“(”

函数声明体中应为“{”

实例方法声明中预期的“func”关键字

预期声明

'dateFormatter()' 的重新声明无效

我知道这对你来说将是一个非常简单的问题 我搜索谷歌,文档甚至堆栈,但我找不到任何正确的方法来解决这个问题。

import SwiftUI
import Foundation


struct Alarm_view: View {

let time = Date()
let timeFormatter = DateFormatter()
timeFormatter.dateFormat = "HH:ss"
let stringDate = dateFormatter.string(from: time)


@State var selecttimes = Date()
@State var sound = 1
@State var currenttimes = NSDate()
@State var currenttimetext = Date()
@State var timetext = Date()


var body: some View {
    VStack {
        NavigationView{
            Form {
                Section {
                    DatePicker(selection: $selecttimes,displayedComponents: .hourAndMinute, label: { Text("tamest") })
                    Picker(selection: $sound, label: Text("alarm")) {
                        /*@START_MENU_TOKEN@*/Text("1").tag(1)/*@END_MENU_TOKEN@*/
                        /*@START_MENU_TOKEN@*/Text("2").tag(2)/*@END_MENU_TOKEN@*/
                        Text("3").tag(3)
                    }
                }
            }.navigationBarTitle(Text("alarm set"))
        }
        VStack {
            Button("start") {
                self.timetext = self.selecttimes


            }.foregroundColor(Color.black).offset(y:-5)
            Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/) {
            Text("stop")
                .foregroundColor(Color.red)
        }
        }.offset(y: -10)
        Text("\(timetext)")
        Text("\(currenttimetext)")

    }
}

}
struct Alarm_view_Previews: PreviewProvider {
static var previews: some View {
    Alarm_view()
}
}

【问题讨论】:

    标签: ios time swiftui alarm xcode11.1


    【解决方案1】:

    你应该在函数中定义如下代码

        let time = Date()
        let timeFormatter = DateFormatter()
        timeFormatter.dateFormat = "HH:ss"
        let stringDate = timeFormatter.string(from: time)
    
    
        func getDate()->String{
         let time = Date()
         let timeFormatter = DateFormatter()
         timeFormatter.dateFormat = "HH:ss"
         let stringDate = timeFormatter.string(from: time)
         return stringDate
        }
    

    希望这可以帮助您解决问题

    【讨论】:

    • 哇它好用!!!!我只是想知道为什么我需要创建函数?在它没有功能之前工作对吗?变了吗??
    • 没有任何改变,之前也没有工作。请查看倒数第二行代码中的“dateFormatter”问题,该问题现在已替换为“timeFormatter”。如果您想尝试不使用函数,请将此变量替换为您声明的变量
    • 你为什么要用小时和秒来格式化时间而不用分钟"HH:ss"
    【解决方案2】:

    从 iOS 14 开始,Text 有一个名为 style 的属性,用于显示日期。

    文本.日期样式

    用于显示日期的预定义样式。 https://developer.apple.com

    您不需要使用DateFormatter。可能使用Text()time 作为样式就足够了。

    Text(Date(), style: .time) 
    

    在你的情况下:

    Text(timetext, style: .time)
    Text(currenttimetext, style: .time)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-11
      • 2023-03-16
      • 2016-07-04
      • 2017-08-02
      • 1970-01-01
      • 2011-04-06
      相关资源
      最近更新 更多