标签: nsdate

如何从这个字符串"2010-11-01"获得NSDate

任何人都可以告诉我为什么我不能从这个字符串"2010-11-01"获得正确的NSDate?

iphone nsdate

0
推荐指数
1
解决办法
343
查看次数

关于NSDateFormatter和NSCalendar的问题(涉及时区)

我有以下代码:

    self.formatter = [[NSDateFormatter alloc] init];
    [formatter setTimeZone:timeZone];
    [formatter setDateFormat:@"YYYY-MM-dd hh:mm:ss a z"];
    timeStampForCity = [formatter stringFromDate:[NSDate date]];
    NSLog(@"%@", timeStampForCity);
    updateDate = [formatter dateFromString:timeStampForCity];
    NSLog(@"%@", updateDate);
Run Code Online (Sandbox Code Playgroud)

NSLog(@"%@", timeStampForCity); 输出:

2011-08-01 10:05:50 PM EDT
Run Code Online (Sandbox Code Playgroud)

但是NSLog(@"%@", updateDate);产出:

2011-08-02 02:05:50 +0000
Run Code Online (Sandbox Code Playgroud)

我需要updateDate在当前时区中显示时间(例如,如第一个NSLog()输出中所示).我该怎么做呢?

编辑1

我也有这个代码:

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit| NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSTimeZoneCalendarUnit;
    NSDateComponents *dateComponents = [gregorian components:unitFlags fromDate:[NSDate date]];
    [dateComponents setTimeZone:[NSTimeZone timeZoneWithName:cityNameFormatted]];
    updateDate = [gregorian dateFromComponents:dateComponents]; …
Run Code Online (Sandbox Code Playgroud)

objective-c nsdate nsdateformatter nstimezone ios

0
推荐指数
1
解决办法
1400
查看次数

为什么使用NSDate将double转换为字符串会额外增加30分钟

double duration = 20; // duration is in seconds 

NSDate* durationDate = [[NSDate alloc]initWithTimeIntervalSinceReferenceDate:duration];

NSDateFormatter *formatter = nil;


formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"mm:ss"];

NSString *durationString=[formatter stringFromDate:durationDate];//here durationString should have 20 
Run Code Online (Sandbox Code Playgroud)

但我到了30:20?从这里加入30分钟.我试过给出更大的数字然后同样的结果

请让我知道对此的想法以及如何解决这个问题

xcode objective-c nsdate nsdateformatter ios

0
推荐指数
1
解决办法
222
查看次数

如何实现上个月/下个月的按钮并显示当月的日期?

场景:

我有跟踪iOS应用程序的费用,我将费用从费用明细视图控制器存储到表视图(带有提取结果控制器),显示费用列表以及类别和金额和日期.我的实体"Money"中有一个日期属性,它是费用或收入的父实体.

题:

我想要的是基本上按月分类我的费用并将其显示为部分标题,例如:(2012年11月1日 - 11月30日),它显示根据特定月份的费用金额和相关的东西.在该视图中提供了两个按钮,如果我按下右按钮,它将使月份增加一个月(2012年12月1日 - 12月31日),同样左按钮会将月份减少一个月.

我怎么做到这一点?我正在尝试以下代码 - 这有点工作.假设我的当前部分标题为(2012年11月1日 - 11月30日),当我按下左按钮时,它给出了截面标题(2012年10月1日 - 10月30日),这是错误的,它应该是2012年10月31日而不是2012年10月30日.

- (NSDate *)firstDateOfTheMonth
{
    self.startDate = [NSDate date];

    NSCalendar* calendar = [NSCalendar currentCalendar];

    [calendar setTimeZone:[NSTimeZone localTimeZone]];

    NSDateComponents* components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:self.startDate];

    [components setDay:1];

    firstDateOfTheMonth = [[calendar dateFromComponents:components] retain];

    return firstDateOfTheMonth;

}

- (NSDate *)lastDateOfTheMonth
{
    NSCalendar* calendar = [NSCalendar currentCalendar];

    [calendar setTimeZone:[NSTimeZone localTimeZone]];

    NSDateComponents* components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:firstDateOfTheMonth];

    [components setMonth:[components month]+1];
    [components setDay:0];

    lastDateOfTheMonth = [[calendar dateFromComponents:components] retain];

    return lastDateOfTheMonth;
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个名为"monthCalculation"的方法,我在其中调用上述两种方法.

- …
Run Code Online (Sandbox Code Playgroud)

objective-c nsdate nscalendar nsdatecomponents ios

0
推荐指数
1
解决办法
4332
查看次数

将String转换为NSDate始终为nil

我想从NSString转换为NSDate对象.我的字符串是:@"01/01/2013.

以下是将字符串转换为NSDate的代码:

- (NSDate*) formatDateTimeFromString: (NSString* ) string{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    NSDate* date=  [dateFormatter dateFromString:string    ];
    return date;
}
Run Code Online (Sandbox Code Playgroud)

我调试函数,看到日期对象总是为零.我有什么错吗?

objective-c nsdate ios

0
推荐指数
1
解决办法
136
查看次数

在某些情况下,将NSString转换为NSDate会增加一年

自今年年底以来,我有一些问题将NSString转换为NSDate.代码之前一直很好用,但它突然开始表现得很奇怪......

例如,2013-01-05在转换为NSDate时变为2014-01-05.

因为它整整一年都不觉得它是时区令人讨厌的.

2012年的日期并没有这样做.

有没有人知道可能出错的是什么?

代码:NSString*dateString = postInfo.no​​teDate; NSString*newDateString = [dateString substringToIndex:10];

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"YYYY-MM-dd"]; 
    NSDate *date = [[NSDate alloc] init];
    date = [dateFormat dateFromString:newDateString];
Run Code Online (Sandbox Code Playgroud)

newDateString返回2013-01-05

日期返回2014-01-05

cocoa-touch objective-c nsdate ios

0
推荐指数
1
解决办法
236
查看次数

将12小时格式的NSDate转换为24小时格式

我有一个NSDate12小时格式的对象2014-09-16 04:40:05 pm +0000.

我想将其转换为24小时格式,并希望获得一个像NSDate这样的对象2014-09-16 16:40:05 +0000.

有人可以指导我这样做.

所以我想要一些方法,如:

-(NSDate *) get24HourFormat:(NSDate *) date{

  return date object;
} 
Run Code Online (Sandbox Code Playgroud)

iphone nsdate nsdateformatter ios

0
推荐指数
1
解决办法
5364
查看次数

如何比较NSDate以检查日期是否在同一周内

我有两个NSDates.如何比较它们以确定日期是否在同一周内.

我有一个系统,目前检查两个日期是否在同一天内,并且代码如下:

if calan.compareDate(datee, toDate: now, toUnitGranularity: .CalendarUnitDay) == .OrderedSame {
    transactionsToday.addObject(transaction)
}else{
    println("No transactions today")
}
Run Code Online (Sandbox Code Playgroud)

我将使用哪个UnitGranularity来检查两个日期是否共享同一周?

nsdate swift

0
推荐指数
1
解决办法
3970
查看次数

Swift将NSDate转换为24h格式在Device上失败

当我在iPhone6上运行我的应用程序时,我遇到了一个恼人的错误.
我需要将一小时(由datePicker选取)从12h转换为24h格式.
简单的事!是的,我很确定,但是...我的代码在模拟器上工作,但在设备上没有.
代码如下:

func convertTimeTo24HoursFomratString() -> String {
        let dateFormatter = NSDateFormatter()
        // isFormatTime24Hours is a static function that returns me if the device has a 24h clock or not. It works fine both on device and on simulator
        //if NSDateUtility.isFormatTime24Hours() {
        //    dateFormatter.dateFormat = "h:mm a"
        //    return dateFormatter.stringFromDate(self)
        //}

        dateFormatter.dateFormat = "HH:mm"
        return dateFormatter.stringFromDate(self)
}
Run Code Online (Sandbox Code Playgroud)

我哪里做错了?
iOS版本到处都是9.1.
提前感谢您的回答!

[在Paul.s问题之后编辑]
在模拟器上它返回24h格式化日期(右).
在设备上它返回12h格式化日期(错误).

nsdate nsdateformatter ios swift

0
推荐指数
1
解决办法
2426
查看次数

dateFromComponents提供错误的日期

我试图获取我所设置的日期Date,但它比实际日期减少了一天.

let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let dateComponents = calendar!.components([.Year , .Month , .Weekday, .Day], fromDate: NSDate())
dateComponents.year = 2015
dateComponents.month = 9
dateComponents.day = 1
Run Code Online (Sandbox Code Playgroud)
po calendar!.dateFromComponents(dateComponents)
? Optional(2015-08-31 18:30:00 +0000)
  - Some : 2015-08-31 18:30:00 +0000
Run Code Online (Sandbox Code Playgroud)

nsdate nsdatecomponents ios swift

0
推荐指数
1
解决办法
1409
查看次数