Ios 仅显示当前日期";年月日;在swift中,nsdate格式不转换为nsstring

Ios 仅显示当前日期";年月日;在swift中,nsdate格式不转换为nsstring,ios,sqlite,swift4,Ios,Sqlite,Swift4,我有db字段NSDate格式,所以我尝试插入当前日期,但它显示如下“2018-04-18 12:19:24+0000”,但不希望该12:19:24+0000值仅“2018-04-18”这三个值。我可以在不将日期转换为字符串的情况下获取这些值吗 您可以使用日历的开始日期来剥离时间部分 要获得UTC,请创建一个自定义日历(此处为gregorian),并将时区设置为UTC var calendar = Calendar(identifier: .gregorian) calendar.timeZone

我有db字段
NSDate
格式,所以我尝试插入当前日期,但它显示如下
“2018-04-18 12:19:24+0000”
,但不希望该
12:19:24+0000
值仅
“2018-04-18”
这三个值。我可以在不将
日期
转换为
字符串
的情况下获取这些值吗

您可以使用
日历
开始日期
来剥离时间部分

要获得UTC,请创建一个自定义日历(此处为
gregorian
),并将
时区设置为UTC

var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
let dateWithoutTime = calendar.startOfDay(for: Date())
print(dateWithoutTime)

您可以使用NSDateFormatter。将日期转换为所需格式,然后将转换后的日期插入数据库

//Step 1: Convert the date to string
NSDateFormatter * formatter =  [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MMM-dd HH:mm:ss Z"];
NSString *dateString = [formatter stringFromDate:datePicker.date];

//Step 2: Convert the string to date in the req format
[formatter setDateFormat:@"yyyy-MMM-dd"];
NSDate *reqDate = [formatter dateFromString:dateString];

你在使用oracle?sqlite数据库吗?他提到的
没有将日期转换为字符串。您的
“2018-04-18 12:19:24+0000”
的日期格式
yyyy-MMM-dd HH:mm:ss
也错误。感谢@TheTiger指出错误。我理解他提到的没有转换为字符串,但他希望DB不接受日期的字符串数据类型。您的代码是2018-04-23“00:00:00+0000”,时间戳值也是,我希望与2018-04完全一样-23@senthil
Date
对象永远不能像
2018-04-23
那样打印完整值。它只能包含不同的组件,因此
0
表示它不包含此组件。如果不将日期转换为字符串,则不可能
Date
只是一个时间点(实际上是一个
Double
的包装)。您可以使用
DateComponents
@vadian,即使在转换为字符串后也不可能,因为他正在打印
date
对象