当前位置: 首页 > 面试题库 >

如何打印星期几的名称?

张鸿志
2023-03-14
问题内容

我正在尝试打印星期几的名称,即星期一,星期二,星期三。我目前有一些代码可以做到这一点。我想知道是否有办法摆脱我的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版本的日期