问题描述
我有从服务调用中以日期字符串的形式返回的数据。我想转换日期字符串,以便我可以按以下格式绘制它们,即“HH:mm”。该图绘制正确,但 xAxis 的小时和分钟时间错误。当我点击图表时,我得到的 xValue 与显示的非常不同。
关于如何显示 xAxis 的正确值的任何想法。
示例 Json 数据:
[
{
"timestamputc": "2021-02-14T22:15:00"
},{
"timestamputc": "2021-02-14T22:20:00"
},{
"timestamputc": "2021-02-14T22:25:00"
},{
"timestamputc": "2021-02-14T22:30:00"
},{
"timestamputc": "2021-02-14T22:35:00"
},{
"timestamputc": "2021-02-14T22:40:00"
},{
"timestamputc": "2021-02-14T22:50:00"
},{
"timestamputc": "2021-02-14T22:55:00"
},{
"timestamputc": "2021-02-14T23:00:00"
},{
"timestamputc": "2021-02-14T23:05:00"
},{
"timestamputc": "2021-02-14T23:10:00"
},{
"timestamputc": "2021-02-14T23:15:00"
},{
"timestamputc": "2021-02-14T23:20:00"
},{
"timestamputc": "2021-02-14T23:25:00"
},{
"timestamputc": "2021-02-14T23:30:00"
},{
"timestamputc": "2021-02-14T23:35:00"
},{
"timestamputc": "2021-02-14T23:40:00"
},{
"timestamputc": "2021-02-14T23:45:00"
},{
"timestamputc": "2021-02-14T23:50:00"
},{
"timestamputc": "2021-02-14T23:55:00"
},{
"timestamputc": "2021-02-15T00:00:00"
},{
"timestamputc": "2021-02-15T00:05:00"
},{
"timestamputc": "2021-02-15T00:10:00"
},{
"timestamputc": "2021-02-15T00:15:00"
},{
"timestamputc": "2021-02-15T00:20:00"
},{
"timestamputc": "2021-02-15T00:25:00"
},{
"timestamputc": "2021-02-15T00:30:00"
},{
"timestamputc": "2021-02-15T00:35:00"
},{
"timestamputc": "2021-02-15T00:40:00"
},{
"timestamputc": "2021-02-15T00:45:00"
},{
"timestamputc": "2021-02-15T00:50:00"
},{
"timestamputc": "2021-02-15T00:55:00"
},{
"timestamputc": "2021-02-15T01:00:00"
},{
"timestamputc": "2021-02-15T01:05:00"
},{
"timestamputc": "2021-02-15T01:10:00"
},{
"timestamputc": "2021-02-15T01:15:00"
},{
"timestamputc": "2021-02-15T01:20:00"
},{
"timestamputc": "2021-02-15T01:25:00"
},{
"timestamputc": "2021-02-15T01:30:00"
},{
"timestamputc": "2021-02-15T01:35:00"
},{
"timestamputc": "2021-02-15T01:40:00"
},{
"timestamputc": "2021-02-15T01:45:00"
},{
"timestamputc": "2021-02-15T01:50:00"
},{
"timestamputc": "2021-02-15T01:55:00"
},{
"timestamputc": "2021-02-15T02:00:00"
},{
"timestamputc": "2021-02-15T02:05:00"
},{
"timestamputc": "2021-02-15T02:10:00"
},{
"timestamputc": "2021-02-15T02:15:00"
},{
"timestamputc": "2021-02-15T02:20:00"
},{
"timestamputc": "2021-02-15T02:25:00"
},{
"timestamputc": "2021-02-15T02:30:00"
},{
"timestamputc": "2021-02-15T02:35:00"
},{
"timestamputc": "2021-02-15T02:40:00"
},{
"timestamputc": "2021-02-15T02:45:00"
},{
"timestamputc": "2021-02-15T02:50:00"
},{
"timestamputc": "2021-02-15T02:55:00"
},{
"timestamputc": "2021-02-15T03:00:00"
},{
"timestamputc": "2021-02-15T03:05:00"
},{
"timestamputc": "2021-02-15T03:10:00"
},{
"timestamputc": "2021-02-15T03:15:00"
},{
"timestamputc": "2021-02-15T03:20:00"
},{
"timestamputc": "2021-02-15T03:25:00"
},{
"timestamputc": "2021-02-15T03:30:00"
},{
"timestamputc": "2021-02-15T03:35:00"
},{
"timestamputc": "2021-02-15T03:40:00"
},{
"timestamputc": "2021-02-15T03:45:00"
},{
"timestamputc": "2021-02-15T03:50:00"
},{
"timestamputc": "2021-02-15T03:55:00"
},{
"timestamputc": "2021-02-15T04:00:00"
},{
"timestamputc": "2021-02-15T04:05:00"
},{
"timestamputc": "2021-02-15T04:10:00"
},{
"timestamputc": "2021-02-15T04:15:00"
},{
"timestamputc": "2021-02-15T04:20:00"
},{
"timestamputc": "2021-02-15T04:25:00"
},{
"timestamputc": "2021-02-15T04:30:00"
},{
"timestamputc": "2021-02-15T04:35:00"
},{
"timestamputc": "2021-02-15T04:40:00"
},{
"timestamputc": "2021-02-15T04:45:00"
},{
"timestamputc": "2021-02-15T04:50:00"
},{
"timestamputc": "2021-02-15T04:55:00"
},{
"timestamputc": "2021-02-15T05:00:00"
},{
"timestamputc": "2021-02-15T05:05:00"
},{
"timestamputc": "2021-02-15T05:15:00"
},{
"timestamputc": "2021-02-15T05:20:00"
},{
"timestamputc": "2021-02-15T05:25:00"
},{
"timestamputc": "2021-02-15T05:30:00"
},{
"timestamputc": "2021-02-15T05:35:00"
},{
"timestamputc": "2021-02-15T05:40:00"
},{
"timestamputc": "2021-02-15T05:45:00"
},{
"timestamputc": "2021-02-15T05:50:00"
},{
"timestamputc": "2021-02-15T05:55:00"
},{
"timestamputc": "2021-02-15T06:00:00"
},{
"timestamputc": "2021-02-15T06:05:00"
},{
"timestamputc": "2021-02-15T06:10:00"
},{
"timestamputc": "2021-02-15T06:15:00"
},{
"timestamputc": "2021-02-15T06:20:00"
},{
"timestamputc": "2021-02-15T06:25:00"
},{
"timestamputc": "2021-02-15T06:30:00"
},{
"timestamputc": "2021-02-15T06:35:00"
},{
"timestamputc": "2021-02-15T06:40:00"
},{
"timestamputc": "2021-02-15T06:45:00"
},{
"timestamputc": "2021-02-15T06:50:00"
},{
"timestamputc": "2021-02-15T06:55:00"
},{
"timestamputc": "2021-02-15T07:00:00"
},{
"timestamputc": "2021-02-15T07:05:00"
},{
"timestamputc": "2021-02-15T07:10:00"
},{
"timestamputc": "2021-02-15T07:15:00"
},{
"timestamputc": "2021-02-15T07:20:00"
},{
"timestamputc": "2021-02-15T07:25:00"
},{
"timestamputc": "2021-02-15T07:30:00"
},{
"timestamputc": "2021-02-15T07:35:00"
},{
"timestamputc": "2021-02-15T07:40:00"
},{
"timestamputc": "2021-02-15T07:45:00"
},{
"timestamputc": "2021-02-15T07:50:00"
},{
"timestamputc": "2021-02-15T07:55:00"
},{
"timestamputc": "2021-02-15T08:00:00"
},{
"timestamputc": "2021-02-15T08:05:00"
},{
"timestamputc": "2021-02-15T08:10:00"
},{
"timestamputc": "2021-02-15T08:15:00"
},{
"timestamputc": "2021-02-15T08:20:00"
},{
"timestamputc": "2021-02-15T08:25:00"
},{
"timestamputc": "2021-02-15T08:30:00"
},{
"timestamputc": "2021-02-15T08:35:00"
},{
"timestamputc": "2021-02-15T08:40:00"
},{
"timestamputc": "2021-02-15T08:45:00"
},{
"timestamputc": "2021-02-15T08:50:00"
},{
"timestamputc": "2021-02-15T08:55:00"
},{
"timestamputc": "2021-02-15T09:00:00"
},{
"timestamputc": "2021-02-15T09:05:00"
},{
"timestamputc": "2021-02-15T09:10:00"
},{
"timestamputc": "2021-02-15T09:15:00"
},{
"timestamputc": "2021-02-15T09:20:00"
},{
"timestamputc": "2021-02-15T09:25:00"
},{
"timestamputc": "2021-02-15T09:30:00"
},{
"timestamputc": "2021-02-15T09:35:00"
},{
"timestamputc": "2021-02-15T09:40:00"
},{
"timestamputc": "2021-02-15T09:45:00"
},{
"timestamputc": "2021-02-15T09:50:00"
},{
"timestamputc": "2021-02-15T09:55:00"
},{
"timestamputc": "2021-02-15T10:00:00"
},{
"timestamputc": "2021-02-15T10:05:00"
},{
"timestamputc": "2021-02-15T10:10:00"
},{
"timestamputc": "2021-02-15T10:15:00"
},{
"timestamputc": "2021-02-15T10:20:00"
},{
"timestamputc": "2021-02-15T10:25:00"
},{
"timestamputc": "2021-02-15T10:30:00"
},{
"timestamputc": "2021-02-15T10:35:00"
},{
"timestamputc": "2021-02-15T10:40:00"
},{
"timestamputc": "2021-02-15T10:45:00"
},{
"timestamputc": "2021-02-15T10:50:00"
},{
"timestamputc": "2021-02-15T10:55:00"
},{
"timestamputc": "2021-02-15T11:00:00"
},{
"timestamputc": "2021-02-15T11:05:00"
},{
"timestamputc": "2021-02-15T11:10:00"
},{
"timestamputc": "2021-02-15T11:15:00"
},{
"timestamputc": "2021-02-15T11:20:00"
},{
"timestamputc": "2021-02-15T11:25:00"
},{
"timestamputc": "2021-02-15T11:30:00"
},{
"timestamputc": "2021-02-15T11:35:00"
},{
"timestamputc": "2021-02-15T11:40:00"
},{
"timestamputc": "2021-02-15T11:45:00"
},{
"timestamputc": "2021-02-15T11:50:00"
},{
"timestamputc": "2021-02-15T11:55:00"
},{
"timestamputc": "2021-02-15T12:00:00"
},{
"timestamputc": "2021-02-15T12:05:00"
},{
"timestamputc": "2021-02-15T12:10:00"
},{
"timestamputc": "2021-02-15T12:15:00"
},{
"timestamputc": "2021-02-15T12:20:00"
},{
"timestamputc": "2021-02-15T12:25:00"
},{
"timestamputc": "2021-02-15T12:30:00"
},{
"timestamputc": "2021-02-15T12:35:00"
},{
"timestamputc": "2021-02-15T12:40:00"
},{
"timestamputc": "2021-02-15T12:45:00"
},{
"timestamputc": "2021-02-15T12:50:00"
},{
"timestamputc": "2021-02-15T12:55:00"
},{
"timestamputc": "2021-02-15T13:00:00"
},{
"timestamputc": "2021-02-15T13:05:00"
},{
"timestamputc": "2021-02-15T13:10:00"
},{
"timestamputc": "2021-02-15T13:15:00"
},{
"timestamputc": "2021-02-15T13:20:00"
},{
"timestamputc": "2021-02-15T13:25:00"
},{
"timestamputc": "2021-02-15T13:30:00"
},{
"timestamputc": "2021-02-15T13:35:00"
},{
"timestamputc": "2021-02-15T13:40:00"
},{
"timestamputc": "2021-02-15T13:45:00"
}
]
我用来绘制 X 轴日期的辅助函数:
extension String {
func getDate() -> Date? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.timeZone = TimeZone.current
dateFormatter.locale = Locale.current
return dateFormatter.date(from: self)
}
}
extension Date {
var milliseconds: Double {
return self.timeIntervalSince1970 * 1000
}
self.init(timeIntervalSince1970: TimeInterval(milliseconds) / 1000)
init(millisecondsSince1970: Double) {
self.init(timeIntervalSince1970: TimeInterval(millisecondsSince1970) / 1000)
}
func stringDate(with dateFormat: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = dateFormat
return dateFormatter.string(from: self)
}
}
将数据传递到图中:
func onFetchSuccess(data: [TestData]) {
let values = data.map { $0.marketDataOpen }
let dataPoints = data.map { $0.timestampuTC.milliseconds }
setChart(dataPoints: dataPoints,values: values)
}
func setChart(dataPoints: [Double],values: [Double]) {
dataEntries = []
for index in 0 ..< dataPoints.count {
dataEntries.append(ChartDataEntry(x: dataPoints[index],y: values[index]))
}
let lineChartDataSet = LineChartDataSet(entries: dataEntries,label: "Units Consumed")
lineChartDataSet.axisDependency = .right
lineChartDataSet.setColor(Colors.plumLightColor)
lineChartDataSet.linewidth = 2.0
lineChartDataSet.circleRadius = 0
lineChartDataSet.highlightColor = Colors.plumLightColor
lineChartDataSet.highlightlinewidth = 1.0
lineChartDataSet.highlightLineDashLengths = [5]
var dataSets = [LineChartDataSet]()
dataSets.append(lineChartDataSet)
let lineChartData = LineChartData(dataSets: dataSets)
lineChartData.setDrawValues(false)
chartView.data = lineChartData
chartView.rightAxis.enabled = true
chartView.leftAxis.enabled = false
chartView.xAxis.drawGridLinesEnabled = true
chartView.xAxis.labelPosition = .bottom
chartView.xAxis.valueFormatter = DateValueFormatter()
chartView.xAxis.granularity = 1.0
chartView.legend.enabled = false
chartView.rightAxis.axislinewidth = 2.0
chartView.rightAxis.gridlinewidth = 1
chartView.xAxis.axislinewidth = 2.0
chartView.xAxis.gridlinewidth = 1
chartView.xAxis.gridColor = Colors.backgroundGray
chartView.rightAxis.gridColor = Colors.backgroundGray
chartView.rightAxis.valueFormatter = YAxisValueFormatter()
}
日期值格式器:
class DateValueFormatter: NSObject,IAxisValueFormatter {
private let dateFormatter = DateFormatter()
override init() {
super.init()
dateFormatter.dateFormat = "HH:mm"
}
func stringForValue(_ value: Double,axis: AxisBase?) -> String {
let formattedDate = Date(timeIntervalSince1970: value)
return dateFormatter.string(from: formattedDate)
}
}
图形是什么样的:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)