我正在尝试打印星期几的名称,即星期一,星期二,星期三。我目前有一些代码可以做到这一点。我想知道是否有办法摆脱我的switch语句并使它变得更好。谢谢!
func getDayOfWeek(_ today: String) -> String? {
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)
switch weekDay {
case 1:
return "Sunday"
case 2:
return "Monday"
case 3:
return "Tuesday"
case 4:
return "Wednesday"
case 5:
return "Thursday"
case 6:
return "Friday"
case 7:
return "Saturday"
default:
return ""
}
}
getDayOfWeek("2018-3-5")
打印“星期一”
您使用了错误的日期格式。正确的格式是"yyyy-M-d"
。除此之外,您可以使用Calendar属性weekdaySymbols返回本地化的工作日。
func getDayOfWeek(_ date: String) -> String? {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-M-d"
formatter.locale = Locale(identifier: "en_US_POSIX")
guard let todayDate = formatter.date(from: date) else { return nil }
let weekday = Calendar(identifier: .gregorian).component(.weekday, from: todayDate)
return Calendar.current.weekdaySymbols[weekday-1] // "Monday"
}
另一个选择是使用DateFormatter并将dateFormat设置为"cccc"
,您可以在此答案中看到:
extension Formatter {
static let weekdayName: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "cccc"
return formatter
}()
static let customDate: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-M-d"
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter
}()
}
extension Date {
var weekdayName: String { Formatter.weekdayName.string(from: self) }
}
使用函数上方的扩展名看起来像这样:
func getDayOfWeek(_ date: String) -> String? { Formatter.customDate.date(from: date)?.weekdayName }
游乐场测试:
getDayOfWeek("2018-3-5") // Monday
Date().weekdayName // Thursday
问题内容: 是否可以在SQL中像下面这样创建一个星形的三角形。我知道可以用任何其他编程语言(如C,C ++,Java)轻松完成此操作,但想知道仅使用SQL还是PL是否真的可能/ SQL。我尝试在Oracle中使用双表对其进行处理,但无法通过它。 如果有人知道,有人可以请大家介绍一下。 问题答案: 最简单的方法就是这样。特别是如果要构建等边三角形而不是直角三角形,则可以变得更加复杂。
问题内容: 我想找出以下内容:给定日期(对象),星期几是几号? 例如,星期日是第一天,星期一:第二天..依此类推 然后,如果输入的内容类似于今天的日期。 例 输出可能是6(因为它是星期五) 问题答案: 使用: 从文档中: 以整数返回星期几,其中星期一为0,星期日为6。
问题内容: 我想知道用户本地语言的星期几(星期一,星期二…)。例如,如果用户是法语,则为“ Lundi”,“ Mardi”等。 我已经阅读了这篇文章,但是它只返回一个int,而不是用用户语言显示的日期字符串:在Android中获取星期几的最简单方法是什么? 更一般而言,您如何获得以用户语言写的一周中的每一天和一年中的所有月份? 我认为这是可行的,例如Google议程提供了用用户本地语言写的日期和月
我一直在尝试实践它的问题,并扩展它们一点 - 我卡住了。代码将根据需要给出尽可能多的星形结果,但我不知道如何让用户决定n的值。 我尝试添加到这两个方法(main/starString)代码行:扫描仪输入=new.Scanner(System.in); int n=input.next ();" [也input.nextInt] 但是代码会注意到允许从控制台进行任何输入。更不用说,我不知道应该在哪里
问题内容: 我有当前日期,还有一个常数,它指示星期几。我想基于该常数获取一周的开始日期。如果我将一周的第一天硬编码为星期一(或其他任何东西),那么这很简单。但是一周的第一天一直在变化。因此,我不想在每次更改第一天时都更改代码。 这是我尝试使用Java的Calendar的方法: 我想获取一周的开始日期。上面的函数返回星期的第一天,并且星期开始日期被硬编码为星期六。每当星期开始日期以上的要求发生变化时
问题内容: 我想获取一个格式为“ YYYYMMdd”的日期(例如今天是20110627)作为当前一周的星期一。从明天到星期天,我仍然想打印星期一(今天)的日期。然后,下周,重复该过程 问题答案: 如果范围是您的目标,那么您可能需要做一些事情 将输出: 20110628-20110703 有关日期的更多信息 请注意,这仅适用于GNU日期 我读过: 可以通过替换sunfreeware.com版本的日期