ios - Swift 3 - Android 相当于使用日历类过去 12 个月

标签 ios swift swift3 nsdate nscalendar

Android 中,我能够为过去 12 个月(包括本月)的折线图生成标签。

在我的 TimeDateHelper 类中:

public static DateFormat getMonthYearChartLabelFormat() {
    DateFormat monthYearChartLabelFormat = new SimpleDateFormat("MMM ''yy", Locale.US);
    monthYearChartLabelFormat.setTimeZone(TimeZone.getDefault());
    return monthYearChartLabelFormat;
}

在我的另一个 LineChartActivity 类中:

private void setUpMonthLabels() {
    this.labels = new ArrayList<>();
    Calendar cal = Calendar.getInstance();
    cal.setTimeZone(TimeZone.getDefault());
    cal.add(Calendar.MONTH, -11);
    for (int i = 0; i < 12; i++) {
        this.labels.add(TimeDateHelper.getMonthYearChartLabelFormat().format(cal.getTime()));
        cal.add(Calendar.MONTH, 1);
    }
}

Swift 3Calendar 类中的enumerateDates 方法太困惑了。我不知道是用那个还是别的什么。我想要的只是过去 12 个月,包括本月。例如,这个月是 12 月,所以输出将是:

Jan '16
Feb '16
Mar '16
Apr '16
May '16
Jun '16
Jul '16
Aug '16
Sep '16
Oct '16
Nov '16
Dec '16

如何使用 Swift 3 完成此操作?

**** 进度 ****

到目前为止,我已经设置了一些格式:

let dateFormatter: DateFormatter = {
    let formatter = DateFormatter()
    formatter.timeZone = TimeZone.current
    return formatter
}()

func getMonthYearChartLabelString(fromDate date: Date) -> String {
    dateFormatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "MMM ''yy", options: 0, locale: Locale(identifier: "en-US"))
    return dateFormatter.string(from: date)
}

由于某些原因,撇号不起作用(例如,它显示 Dec 16 而它应该显示 Dec '16)。

最佳答案

这是我的第一次尝试。

import Foundation

var past12Months: [String] {
    let today = Date()
    let dates = (-12...0).flatMap{ Calendar.current.date(byAdding: .month, value: $0, to: today)}

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MMM ''yy"

    let strings = dates.map{ dateFormatter.string(from: $0)! } //TODO: add error handling here
    return strings
}

print(past12Months)

关于ios - Swift 3 - Android 相当于使用日历类过去 12 个月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41178861/

相关文章:

iphone - 如何分别创建UITableView和detail view

ios - cocos2D 中未显示的 View 崩溃

ios - 嵌入的 youtube 视频未在 WKWebView 中播放,而完全相同的视频在 UIWebView 中工作

Xcode Storyboard - 在哪里设置 UITableViewCell 高度

Swift,MacOS - 拦截按键并防止在屏幕上打字

ios - 在定义的同一 IBAction 中使用未解析的标识符

iphone - 如何获取 iTunes 应用程序描述?

uiview - 在 Swift 中创建一个对角自定义 UIView

swift - 从 nib 实例化 UIView 导致无限循环问题

ios - 如何在 swift 3 中设置按钮标签?