将字符串转换为日期以提供不同的格式

Converting the string to date giving different format

从字符串转换为日期以及将日期转换为字符串时间格式正在更改原始数据。

通过给出小时和分钟

也尝试了 dateComponents
var calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day, .hour], from: calFrom)
calendar.timeZone = .current

// Specify date components
var dateComponents:DateComponents = calendar.dateComponents([.year, .month, .day, .hour], from: Date())
dateComponents.year = components.year
dateComponents.month = components.month
dateComponents.day = components.day
dateComponents.hour = 08//Cutomised hour
dateComponents.minute = 34//Cutomised Minutes

// Create date from components
let someDateTime = calendar.date(from: dateComponents)
print(someDateTime!)

实际输出:

2019-04-02 03:04:00 +0000

预期输出:

2019-04-02 08:34:00 +0000

我也尝试使用以下代码。将日期转换为字符串并手动将小时和分钟附加到字符串并转换回日期。

let calFrom = Date()
let formatter = DateFormatter()
formatter.dateFormat = "dd/MM/yyyy"
var calFromDate = formatter.string(from: calFrom)

calFromDate = calFromDate + " 09" + ":30"
print(calFromDate)
//Output 02/04/2019 09:30
formatter.dateFormat = "dd/MM/yyyy hh:mm"
formatter.locale = Locale.current// set locale to reliable       US_POSIX

let date1 = formatter.date(from: calFromDate)
print(date1!)

实际输出:

2019-04-02 04:00:00 +0000

预期输出:

02/04/2019 09:30

如何获取输出中给出的准确时间?

Date 用于更新 hourminute 组件具有 UTC 时区,因此 calendar 也应具有与 timeZone 相同的时区下面,

calendar.timeZone = TimeZone(abbreviation: "UTC")!