我创建了一个方法,该方法应该采用“ YYYY-MM-
DD”形式的字符串,并吐出一个int,该int表示相对于它所在的星期的日期位置(无论两个月之间是否重叠)。因此,例如,sunday = 1 monday =
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
}
我知道这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 }
static var MinuteCalendarUnit: NSCalendarUnit { get }
static var SecondCalendarUnit: NSCalendarUnit { get }
static var WeekCalendarUnit: NSCalendarUnit { get }
static var WeekdayCalendarUnit: NSCalendarUnit { get }
static var WeekdayOrdinalCalendarUnit: NSCalendarUnit { get }
static var QuarterCalendarUnit: NSCalendarUnit { get }
static var WeekOfMonthCalendarUnit: NSCalendarUnit { get }
static var WeekOfYearCalendarUnit: NSCalendarUnit { get }
static var YearForWeekOfYearCalendarUnit: NSCalendarUnit { get }
static var CalendarCalendarUnit: NSCalendarUnit { get }
static var TimeZoneCalendarUnit: NSCalendarUnit { get }
我不清楚,因为没有DayOfWeekUnit选项(或类似的东西)。
您正在寻找的是(如果我对问题的理解正确的话)NSCalendarUnit.CalendarUnitWeekday
。的对应属性NSDateComponents
是weekday
。
另请注意,您的日期格式不正确(可以在此处找到完整的规范:http
:
//unicode.org/reports/tr35/tr35-6.html)。
使用自动类型推断可以稍微简化该函数,在常量足够的情况下,也可以大量使用变量。另外,该函数应返回nil
用于无效输入字符串的可选参数。
更新了 Swift 3及更高版本的 代码 :
func getDayOfWeek(_ today:String) -> Int? {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
guard let todayDate = formatter.date(from: today) else { return nil }
let myCalendar = Calendar(identifier: .gregorian)
let weekDay = myCalendar.component(.weekday, from: todayDate)
return weekDay
}
例:
if let weekday = getDayOfWeek("2014-08-27") {
print(weekday)
} else {
print("bad input")
}
Swift 2的 原始答案 :
func getDayOfWeek(today:String)->Int? {
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
if let todayDate = formatter.dateFromString(today) {
let myCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let myComponents = myCalendar.components(.Weekday, fromDate: todayDate)
let weekDay = myComponents.weekday
return weekDay
} else {
return nil
}
}
问题内容: 如何获得给定星期几的第一天? 例如,当我写这篇文章时,我们在 WEEK 29。* 我想编写一个MySQL查询,它将使用 WEEKNO 29 作为唯一可用参数返回 7月18日星期日 。 * 问题答案: 您可以使用: 这将为您提供2010年第3周的星期一日期,即2010-01-18。 另一个例子: 请给您2010年第52周的星期日日期,即2010-12-26。 最后,使用原始示例: 这给出
我想从这个函数中获取星期几(星期一,星期二,...),该函数接收参数3 int,即年份、月份和日期,我已经尝试了Calendar和GregorianCalendar,但它仍然给我错误,例如,如果我今天通过日期(2017,11,04)它给我一周中第5天的结果,星期四是今天星期二,我给你留下代码 Log. i显示此消息: DiaSemana:5 dias:11 mes:4 año:2017
我想使用Java8包Java从给定的星期和年份中获取星期一日期。时间但在某种程度上,我面临着这个问题,因为它并没有返回正确的日期。 例如: 如果我通过周=1和年=2013那么日期是:2012-12-31。 但是如果我通过了周=53和年=2015,那么日期是: 2014-12-29。我期待2014-12-28。 我是否有任何逻辑错误或其他问题?
问题内容: 如何获得当前一周的星期一和星期五的日期? 我有以下代码,但是如果当前日期是星期日或星期六,则它将失败。 问题答案: 这些strtotime输入效果很好: 您需要做的就是将逻辑包装在一些if语句中。
问题内容: 我想知道用户本地语言的星期几(星期一,星期二…)。例如,如果用户是法语,则为“ Lundi”,“ Mardi”等。 我已经阅读了这篇文章,但是它只返回一个int,而不是用用户语言显示的日期字符串:在Android中获取星期几的最简单方法是什么? 更一般而言,您如何获得以用户语言写的一周中的每一天和一年中的所有月份? 我认为这是可行的,例如Google议程提供了用用户本地语言写的日期和月
问题内容: 我已经实现了一种获取当前星期中星期一的日期的方法,并且已经将星期一指定为星期的第一天。 但是,无论我做什么,它都会返回2013年3月24日格林尼治标准时间。我看不到这里的问题。有人能帮忙吗? 问题答案: 试试这个 :