所以这是我得到的代码:
NSDate *myCustomDate = [NSDate dateWithTimeIntervalSinceNow:10];
NSLog(@"My custom date: %@", myCustomDate);
Run Code Online (Sandbox Code Playgroud)
它返回:My custom date: 0023-01-23 18:37:17 +0000.
为什么今年会给出一个愚蠢的答案,而不是2011年?其他一切都是正确的.
我正在创建一个倒数计时器,我需要打印剩余的时间(小时:分钟:秒)直到特定日期.我已经找到了如何获得Now和目标日期之间的时间间隔,但我不知道如何将时间间隔格式化为字符串.NSDateFormater是否适用于NSTimeInterval?
我有两个来自服务器的字符串,用于存储时间,我需要比较这两个字符串之间的时间间隔(以分钟为单位,必要时以小时为单位)。我应该转换NSDate还是使用NSString?
该NSString看看这样的:
NOW 14:22
LAST TIME 10:18
Run Code Online (Sandbox Code Playgroud)
编辑#1由于每个人都在说我要使用NSDate,所以我将数据库中的数据转换为DATETIME,现在我可以使用以下代码比较两个NSDate了:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"pt_BR"]];
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];
NSDate *currentDateTimeWithOffset = [NSDate dateWithTimeIntervalSinceNow:[[NSTimeZone localTimeZone] secondsFromGMT]];
NSString *strDate = [dateFormatter stringFromDate:currentDateTimeWithOffset];
NSDate * now = [dateFormatter dateFromString:strDate];
NSDate *date = [dateFormatter dateFromString:@"2013-04-09 12:10:18"];
NSLog(@"Difference %f",[now timeIntervalSinceDate:date]);
Run Code Online (Sandbox Code Playgroud)
结果如下:
Difference 864.000000
NOW 2013-04-09 15:24:42 +0000
LAST DATE 2013-04-09 12:10:18
Run Code Online (Sandbox Code Playgroud)
那是对的吗?差异以秒为单位?
我有这样的一系列时间:
(
"2000-01-01 23:48:00 +0000",
"2000-01-01 02:15:00 +0000",
"2000-01-01 04:39:00 +0000",
"2000-01-01 17:23:00 +0000",
"2000-01-01 13:02:00 +0000",
"2000-01-01 21:25:00 +0000"
)
Run Code Online (Sandbox Code Playgroud)
这是从这段代码生成的:
//loop through array and convert the string times to NSDates
NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
[timeFormatter setDateFormat:@"hh:mm a"];
NSMutableArray *arrayOfDatesAsDates = [NSMutableArray array];
for (NSObject* o in arrayTimes)
{
NSLog(@"%@",o);
NSDate *nsDateTime = [timeFormatter dateFromString:o];
[arrayOfDatesAsDates addObject:nsDateTime];
}
NSLog(@"times array: %@", arrayOfDatesAsDates);//
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我试图在接下来的数组中获得时间.我的计划是删除过去的时间,订购它们,然后在下次使用第一个.
我怎样才能删除过去的?
谢谢
我想在我当前的日期添加3个小时.我使用以下代码添加小时数,但它增加了6个小时到当前日期.
NSDate *n = [NSDate date];
int daysToAdd = 3; // or 60 :-)
// set up date components
NSDateComponents *components1 = [[[NSDateComponents alloc] init] autorelease];
[components1 setHour:daysToAdd];
// create a calendar
NSCalendar *gregorian12 = [NSCalendar currentCalendar];
NSDate *newDate2 = [gregorian12 dateByAddingComponents:components toDate:n options:0];
NSLog(@"Clean: %@", newDate2);
Run Code Online (Sandbox Code Playgroud)
结果是: -
2013-09-10 12:25:24.752 project[1554:c07] Clean: 2013-09-10 06:55:15 +0000
Run Code Online (Sandbox Code Playgroud) 我以毫秒格式从数据库中获取日期.我正在将日期转换为正常日期格式.但是它返回错误的日期.一次请给我ios的解决方案
以毫秒为单位的日期为1385856000000
转换那个日期后,我将于10/26/1970.
但实际日期是12/1/2013.
我使用以下代码是
int dobint = [secondChangeDob intValue];
NSTimeInterval timeInSecond = dobint/1000;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInSecond];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yyyy"];
NSString *formattedDate=[formatter stringFromDate:date];
NSLog(@"Formatted Date : %@",formattedDate);
NSUserDefaults *dateDef = [NSUserDefaults standardUserDefaults];
[dateDef setObject:formattedDate forKey:@"bDATE"];
Run Code Online (Sandbox Code Playgroud)
我从userDefaults获取的值可能是nil或者可能是NSDate,所以我想检查,因为我需要在该日期采取行动.我该如何正确地进行检查?
let timeAtQuit: NSDate = (userDefaults.objectForKey("timeAtQuit") as NSDate)
if(timeAtQuit){ Type 'NSDate' does not conform to protocol 'BooleanType'
if(timeAtQuit != nil){ // 'NSDate' is not convertible to 'UInt8'
another attempt:
var timeAtQuit:NSDate? = (userDefaults.objectForKey("timeAtQuit") as NSDate)
if(timeAtQuit != nil){
let timeSinceQuit:Double = timeAtQuit.timeIntervalSinceNow // 'NSDate?' does not have a member named 'timeIntervalSinceNow'
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个包含单独帖子的应用程序(类似于Instagram).每个帖子都是一个位于一个大数组中的字典.在每个字典中,它们是一个NSDate,我想按照从最新到最旧的顺序对字典进行排序.
我已经阅读了类似的问题,但他们是客观的C.我有一种感觉NSSortDescriptor是一种有用的方法,但我不确定如何在这种情况下使用它.
任何帮助都会很棒,
谢谢
我正在尝试使用Swift获取当前日期NSDate().当我创建断点并停止应用程序时,我可以看到设备的系统时间有3个小时的差异.应用程序在真正的iPhone上运行.如何解决这个问题?
我还在App Delegate中写了以下内容以确定:
NSTimeZone.setDefaultTimeZone(NSTimeZone(name: "Europe/Kiev")!)
Run Code Online (Sandbox Code Playgroud)
但它仍然无效.
我有字符串形式的日期,因为Mon, 18 Apr 2016 07:29:49 GMT现在我试图通过这样做将其转换为日期对象
NSDateFormatter *parsingFormatter = [NSDateFormatter new];
[parsingFormatter setDateFormat:@"EE, dd MMM YYYY hh:mm:ss Z" ];
NSDate *date = [parsingFormatter dateFromString:@"Mon, 18 Apr 2016 07:29:49 GMT"];
Run Code Online (Sandbox Code Playgroud)
但是当我在date对象中看到结果时,它包含以下日期2015-12-21 07:29:49 +0000
有人可以说明为什么它将日期从2016年4月18日更改为2015年12月21日?
nsdate ×10
objective-c ×7
ios ×5
swift ×4
iphone ×2
nsarray ×2
cocoa-touch ×1
milliseconds ×1
nscalendar ×1
nsdictionary ×1
nsstring ×1
xcode ×1