[解決済み] NSDateを使用して曜日を取得する
質問
YYYY-MM-DD"形式の文字列を受け取り、その週に関する日付の位置を表す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")
}
のオリジナル回答 スウィフト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
}
}
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
swift 4.0でのdispatch_async,dispatch_afterの使用について
-
[解決済み] Swift 3でカスタム通知を作成するには?
-
[解決済み] Swiftで警告を消すには?
-
[解決済み] ""内の二重引用符を印刷するには?
-
[解決済み] Swift: インデックスで文字列配列を置換する
-
[解決済み] アニメーションによる円の描画
-
[解決済み] Foundationで曜日を知るにはどうしたらいいですか?
-
[解決済み] ボタンを無効化する
-
[解決済み] Swiftの網羅的なSwitchステートメントのためのNoop
-
[解決済み] swiftの辞書からキーと値のペアを削除するには?