我使用标准的DatePicker并在其上打印日期。 出于某种原因,我的日期选择器将其时区设置为IST,这可能是因为语言环境。
让我们举个例子:
DatePicker - > 12:00 PM日期读取 - > 06:30:00 +0000
这是正确的,因为日期将打印 UTC 时间, IST 为 UTC + 5:30
现在,当我更改DatePicker的时区时,请告诉伦敦 GMT + 1 ,
DatePicker - > 12:00 PM日期读取 - > 06:30:00 +0000
日期应该在11:00:00实际读取
我如何更改DatePicker的时区:
public enum StateEnum {
Ok = 1,
Fail = 2
}
public partial class Foo
{
public int Id { get; set; }
public int StateId { get; set; }
public StateEnum State
{
get => (StateEnum)StateId;
set => StateId = (int)value;
}
}
答案 0 :(得分:0)
我之前有过同样的问题,但另一个原因。试试这个希望它会有所帮助。
首先 -
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
var startDate = dateFormatter.string(from: yourdatepicker.date)
startDate = localToUTC(date: startDate)
其次我们将其转换为本地UTC,这里我们提到TimeZone到系统时间
func localToUTC(date:String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = NSTimeZone.system
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dt = dateFormatter.date(from: date)
return dateFormatter.string(from: dt!)
}
如果您想将UTC转换为当地时间
,请参阅第三步func UTCToLocal(date:String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let dt = dateFormatter.date(from: date)
dateFormatter.timeZone = NSTimeZone.system
dateFormatter.dateFormat = "hh:mm a"
return dateFormatter.string(from: dt!)
}