首页 > 解决方案 > 日期到字符串 => 时间丢失

问题描述

我正在尝试将日期转换为字符串,以便可以将这些数据保存在 Firestore 中。但是我的 getDate 函数只获取今天的日期,而不是时间

struct NewTaskView: View {
@State var taskTitle = ""
@State var taskFrom = ""
@State var taskFromDate = Date()

var body: some View {
    NavigationView {
    VStack(alignment: .leading) {
        Group {  // Type '()' cannot conform to 'View'; only struct/enum/class types can conform to protocols
            Text("Task Title")
            TextField("Title", text:$taskTitle )
            Divider()
            Text("From")
            DatePicker("", selection: $taskFromDate, in: Date()...)
                .labelsHidden()
            .onReceive(Just(taskFromDate)) { data in
                    taskFrom = getDate(date: taskFromDate)
            }
            Divider()
        } .padding(.horizontal, 10)
        .font(Font.custom("SFCompactDisplay-Bold", size: 25))
        .foregroundColor(.gray)

func getDate(date: Date) -> String {
let formatter = DateFormatter()
formatter.dateStyle = .full
let dateTime = formatter.string(from: date)
return dateTime
  }

标签: datepickerswiftui

解决方案


您可以使用以下功能:

 func getDate(date:Date)  -> String{
    
    let formatter = DateFormatter()
    formatter.locale = Locale(identifier: "en_US_POSIX")
    formatter.timeZone = TimeZone(secondsFromGMT: 0)
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
    let updatedAtStr = "2016-06-05T16:56:57.019+01:00"
    let updatedAt = formatter.date(from: updatedAtStr)
    let result = "\(updatedAt!)".split(separator: " ")
    return String(result[0]+" "+result[1])
    
  }

推荐阅读