这是一个非常简单的概念,但到目前为止,我一直无法找到一个优雅的(和日历区域独立)解决方案.我需要找到一个任意的月份的第一天NSDate.例如,给定一个任意NSDate(arbitraryDate)将返回另一个NSDate对象(让我们调用它firstDayOfMonthDate),它代表该月的第一天arbitraryDate.时间组件并不重要,因为我只需要在该月的第一天使用NSDate对象(尽管为了整洁,如果时间刚刚归零,它将是有用的).
在此先感谢您的任何帮助.
我需要得到可能作为当月,但我做不到.我怎样才能做到这一点.
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([.Day , .Month , .Year], fromDate: date)
let year = components.year
let month = components.month
let day = components.day
Run Code Online (Sandbox Code Playgroud)
我做了这个,但没有奏效.
如何设置现有NSDate的时间?
那就是我有一个约会(比如说当前日期/时间),但是想把它设置为特定的时间(例如11.23am).在目标C中最快的方法是什么?
我在看NSCalendar,看的方法,如dateByAddingComponents:toDate:options:,和dateFromComponents:,但这些似乎并没有很切中要害了什么,我需要在这里.例如:
dateFromComponents: - 我必须解决所有这些工作的组件,这似乎有点矫枉过正dateByAddingComponents:toDate:options: - 我不想在我的情况下添加,而是"设置"时间.嗨,我在swift 2.0中遇到此错误
无法使用类型'(NSCalendarUnit,fromDate:NSDate?,toDate:NSDate?,options:nil)的参数列表调用'components'
var hoy = dataFormatter.stringFromDate(NSDate())
var despues = dataFormatter.stringFromDate(fecha)
var calHoy = dataFormatter.dateFromString(hoy)
var calcDesp = dataFormatter.dateFromString(despues)
let cal = NSCalendar.currentCalendar()
let unit:NSCalendarUnit = .Day
let components = cal.components(unit, fromDate: calcDesp, toDate: calHoy, options: nil)
Run Code Online (Sandbox Code Playgroud) 我收到一个错误:"在调用中缺少参数'coder'的参数"以获取以下代码:
var components = NSDateComponents()
components.setValue(1,forComponent: NSCalendarUnit.CalendarUnitMonth);
var expirationDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: NSDate(),options:0)
Run Code Online (Sandbox Code Playgroud)
文档要求:
NSCalendar.currentCalendar().dateByAddingComponents(<#comps: NSDateComponents?#>, toDate: <#NSDate?#>, options: <#NSCalendarOptions#>)
Run Code Online (Sandbox Code Playgroud)
任何人都能看到我错过的东西吗?我没有看到名为'coder'的参数需要.
我正在创建一个日期NSDateComponents().
let startDate = NSDateComponents()
startDate.year = 2015
startDate.month = 9
startDate.day = 1
let calendar = NSCalendar.currentCalendar()
let startDateNSDate = calendar.dateFromComponents(startDate)!
Run Code Online (Sandbox Code Playgroud)
...现在我要打印自startDate今天以来的所有日期,NSDate().我已经尝试过玩NSCalendarUnit,但它只输出整个差异,而不是单个日期.
let unit: NSCalendarUnit = [.Year, .Month, .Day, .Hour, .Minute, .Second]
let diff = NSCalendar.currentCalendar().components(unit, fromDate: startDateNSDate, toDate: NSDate(), options: [])
Run Code Online (Sandbox Code Playgroud)
如何在两个Date对象之间打印所有日期?
编辑2019
与此同时,课程的命名已经改变 - NSDate现在只是Date.NSDateComponents现在被称为DateComponents.NSCalendar.currentCalendar()现在只是Calendar.current.
我想要获得周一的本周日期.这在我的表格视图中被视为一周的第一天.我还需要获得本周的周日.在我的表视图中,这被视为一周的最后一天.
目前的尝试:
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
calendar.firstWeekday = 1
//attempt to changefirstday
let dateFormatter = NSDateFormatter()
let theDateFormat = NSDateFormatterStyle.ShortStyle
let theTimeFormat = NSDateFormatterStyle.ShortStyle
dateFormatter.dateStyle = theDateFormat
dateFormatter.timeStyle = theTimeFormat
let currentDateComponents = calendar.components([.YearForWeekOfYear, .WeekOfYear ], fromDate: date)
let startOfWeek = calendar.dateFromComponents(currentDateComponents)
print("startOfWeek is \(startOfWeek)")
let stringDate = dateFormatter.stringFromDate(startOfWeek!)
print("string date is \(stringDate)") //This is returning Sunday's date
Run Code Online (Sandbox Code Playgroud) 我一直在使用Swift中的时钟应用程序和Xcode 6.3.2以下代码构建并运行得很好.
// Get current time
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitSecond | .CalendarUnitNanosecond, fromDate: date)
let hour = components.hour % 12
let minute = components.minute
let second = components.second
let nanosecond = components.nanosecond
Run Code Online (Sandbox Code Playgroud)
但是,当我在Xcode 7.0 beta中加载相同的项目并且不做任何更改时,我在calendar.components行上出现错误.
Could not find member 'CalendarUnitHour'
Run Code Online (Sandbox Code Playgroud)
我查看了文档,并且不推荐使用所有NSCalendarUnit常量(在iOS 8.0中说),但组件方法的方法描述仍然表示要使用它们.
我已经玩过其他NSCalendarUnit自动完成值,但没有产生工作代码,我在网上找不到任何最近的例子,也许是因为这是全新的.
有人知道新的正确方法吗?
是date1 == date2不是比较有效的方法是什么?如果没有,那么正确的选择是什么?
这是我的代码:
- (NSDate*) dateWithNoTime {
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:flags fromDate:self];
NSDate* dateOnly = [calendar dateFromComponents:components];
return dateOnly;
}
- (BOOL) sameDayAsDate:(NSDate*)dateToCompare {
NSDate *date1 = [self dateWithNoTime];
NSDate *date2 = [dateToCompare dateWithNoTime];
return date1 == date2; // HERE IS WHERE THINGS SEEM TO FAIL
}
Run Code Online (Sandbox Code Playgroud) 我UILocalNotification用于报警目的.我有一个基于工作日重复的自定义选项(sun,mon,tue,wed,thu,fri,sat).许多应用程序都执行了此过程.我最好的尝试了我的水平.但我无法让它发挥作用.请各位帮帮我....
nscalendar ×10
swift ×6
nsdate ×5
ios ×3
iphone ×3
objective-c ×2
cocoa-touch ×1
date ×1
ipad ×1
swift2 ×1