标签: nscalendar

NSDate获得年/月/日

NSDate没有其他信息的情况下,如何获得对象的年/月/日?我意识到我可以用类似的东西做到这一点:

NSCalendar *cal = [[NSCalendar alloc] init];
NSDateComponents *components = [cal components:0 fromDate:date];
int year = [components year];
int month = [components month];
int day = [components day];
Run Code Online (Sandbox Code Playgroud)

但这对于像NSDate年/月/日这样简单的事情来说似乎有很多麻烦.还有其他解决方案吗?

objective-c nsdate nscalendar nsdatecomponents

289
推荐指数
8
解决办法
21万
查看次数

如何确定今天是否有NSDate?

如何检查一个NSDate属于今天?

我曾经使用前10个字符来检查它[aDate description].[[aDate description] substringToIndex:10]"YYYY-MM-DD"这样返回字符串我将字符串与返回的字符串进行了比较[[[NSDate date] description] substringToIndex:10].

有更快速和/或更好的方式来检查?

谢谢.

cocoa-touch objective-c nsdate nscalendar ios

149
推荐指数
10
解决办法
7万
查看次数

iPhone OS:如何为特定日期创建NSDate?

看起来像一个简单的事情,但我似乎无法找到一种方法来做到这一点.

看到几种不同的方法会很棒.

cocoa-touch nsdate nsdateformatter nscalendar ios

94
推荐指数
5
解决办法
6万
查看次数

使用NSDate获取星期几

我创建了一个方法,该方法应该以"YYYY-MM-DD"形式接收一个字符串并吐出一个int,表示相对于它所在周的日期位置(无论它是否在几个月之间重叠).所以例如星期日= 1星期一= 2,依此类推.

这是我的代码:

    func getDayOfWeek(today:String)->Int{

    var formatter:NSDateFormatter = NSDateFormatter()
    formatter.dateFormat = "YYYY-MM-DD"
    var todayDate:NSDate = formatter.dateFromString(today)!
    var myCalendar:NSCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)
    var myComponents = myCalendar.components(NSCalendarUnit.WeekdayOrdinalCalendarUnit, fromDate: todayDate)
    var weekDay = myComponents.weekdayOrdinal
    return weekDay
}
Run Code Online (Sandbox Code Playgroud)

我知道这NSCalendarUnit.WeekdayOrdinalCalendar是错的,但我尝试过我认为最合乎逻辑的组合.并且还混淆了myComponents.weekdayOrdinal例如使用mycomponents.day.weekday.

以下是我可以使用的选项:

static var EraCalendarUnit: NSCalendarUnit { get }
static var YearCalendarUnit: NSCalendarUnit { get }
static var MonthCalendarUnit: NSCalendarUnit { get }
static var DayCalendarUnit: NSCalendarUnit { get }
static var HourCalendarUnit: NSCalendarUnit { get } …
Run Code Online (Sandbox Code Playgroud)

nsdate nscalendar swift

75
推荐指数
11
解决办法
10万
查看次数

使用iOS的当月天数?

如何使用NSDate或Cocoa touch中的类似内容获取当月的当前天数?

cocoa datetime cocoa-touch nscalendar ios

68
推荐指数
4
解决办法
3万
查看次数

swift当月的第一天和最后一天

我试图迅速获得本月的第一天和最后一天.

到目前为止,我有以下内容:

let dateFormatter = NSDateFormatter()
let date = NSDate()
dateFormatter.dateFormat = "yyyy-MM-dd"
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([.Year, .Month, .Day, .Hour, .Minute, .Second], fromDate: date)

let month = components.month
let year = components.year

let startOfMonth = ("\(year)-\(month)-01")
Run Code Online (Sandbox Code Playgroud)

但我不知道如何获得最后的约会.有缺点的内置方法吗?显然它必须考虑到闰年等.

nsdate nscalendar ios swift

59
推荐指数
8
解决办法
4万
查看次数

如何将NSDate对象设置为午夜?

我有一个NSDate对象,我想将它设置为任意时间(比如半夜),这样我可以使用timeIntervalSince1970的功能一致,而不用担心时间来检索数据创建的对象.

我尝试使用NSCalendar一些Objective-C方法来修改它的组件,如下所示:

let date: NSDate = NSDate()
let cal: NSCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)!

let components: NSDateComponents = cal.components(NSCalendarUnit./* a unit of time */CalendarUnit, fromDate: date)
let newDate: NSDate = cal.dateFromComponents(components)
Run Code Online (Sandbox Code Playgroud)

上述方法的问题在于您只能设置一个时间单位(/* a unit of time */),因此您只能使用下列其中一个准确度:

  1. 小时
  2. 分钟

有没有办法同时设置小时,分钟和秒并保留日期(日/月/年)?

datetime nsdate nscalendar ios swift

50
推荐指数
5
解决办法
3万
查看次数

Swift - 检查时间戳是昨天,今天,明天还是X天前

我正在尝试弄清楚如何确定给定时间戳今天是否发生,或+1/-1天.基本上,我想做这样的事情(Pseudocode)

IF days_from_today(timestamp) == -1 RETURN 'Yesterday'
ELSE IF days_from_today(timestamp) == 0 RETURN 'Today'
ELSE IF days_from_today(timestamp) == 1 RETURN 'Tomorrow'
ELSE IF days_from_today(timestamp) < 1 RETURN days_from_today(timestamp) + ' days ago'
ELSE RETURN 'In ' + days_from_today(timestamp) + ' ago'
Run Code Online (Sandbox Code Playgroud)

至关重要的是,它需要在Swift中,我正在努力使用NSDate/NSCalendar对象.我开始研究这样的时差:

let calendar = NSCalendar.currentCalendar()
let date = NSDate(timeIntervalSince1970: Double(timestamp))
let timeDifference = calendar.components([.Second,.Minute,.Day,.Hour],
    fromDate: date, toDate: NSDate(), options: NSCalendarOptions())
Run Code Online (Sandbox Code Playgroud)

然而,以这种方式进行比较并不容易,因为.Day根据一天中的时间和时间戳而不同.在PHP中,我只是使用mktime来创建一个基于一天开始的新日期(即mktime(0,0,0)),但我不确定在Swift中最简单的方法.

有没有人对如何处理这个问题有个好主意?也许NSDate或类似的东西的扩展最好?

nsdate nscalendar ios swift

48
推荐指数
5
解决办法
3万
查看次数

Swift 3 - 查找两个日期之间的日历天数

我在Swift 2.3中这样做的方式是:

let currentDate         = NSDate()
let currentCalendar     = NSCalendar.currentCalendar()

var startDate : NSDate?
var endDate   : NSDate?

// The following two lines set the `startDate` and `endDate` to the start of the day

currentCalendar.rangeOfUnit(.Day, startDate: &startDate, interval: nil, forDate: currentDate)
currentCalendar.rangeOfUnit(.Day, startDate: &endDate, interval: nil, forDate: self)

let intervalComps = currentCalendar.components([.Day], fromDate: startDate!, toDate: endDate!, options: [])

print(intervalComps.day)
Run Code Online (Sandbox Code Playgroud)

现在这已经全部改变了Swift 3.我必须使用NSCalendarNSDate不断地输入as,或者找到Swift 3的方式.

在Swift 3中使用它的正确方法是什么?

nsdate nscalendar swift3

44
推荐指数
6
解决办法
4万
查看次数

NSCalendar第一天的第一天

有没有人知道是否有办法在NSCalendar上设置一周的第一天,或者是否有一个日历已经将星期一作为一周的第一天而不是星期日.我目前正在开发一款基于一周工作量的应用程序,它需要在星期一而不是星期天开始.我很可能会做一些工作来解决这个问题,但会有很多极端情况.我更喜欢平台为我做这件事.

提前致谢

这是我正在使用的一些代码.现在是星期六,所以我希望工作日是6而不是7,这意味着星期日将是7而不是0到0

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setFirstWeekday:0];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit;
NSDateComponents *todaysDate = [gregorian components:unitFlags fromDate:[NSDate date]];
int dayOfWeek = todaysDate.weekday;
Run Code Online (Sandbox Code Playgroud)

iphone cocoa calendar weekday nscalendar

43
推荐指数
7
解决办法
5万
查看次数