我有一系列NSDates,我希望能够检查每一个NSDates并按顺序排列哪一个最接近今天。
这样做有什么方法或功能吗?例如,这是我的日期:
var dateArr = ["2015-11-08", "2015-11-09", "2015-11-10"]
我现在想要迭代它们并按最近日期到当前日期的顺序排列。
答案 0 :(得分:5)
如果要按最近日期到当前日期的顺序对NSDate
个对象进行排序,可以这样做:
let toodayUnixTime = NSDate().timeIntervalSince1970
// array with `NSDate` objects
var dates = [...]
// Sort action
dates.sortInPlace({ abs($0.timeIntervalSince1970 - toodayUnixTime) < abs($1.timeIntervalSince1970 - toodayUnixTime) })
在这种情况下,我们dates
数组包含NSDate
。排序数组的第一个对象是最接近当前日期。
答案 1 :(得分:2)
据我所知,你有一个数组中的NSDates。我用这段代码创建了日期数组:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/xyz.png"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView1"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView2"/>
<TextView
android:id="@+id/textView3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView3"/>
<TextView
android:id="@+id/textView4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView4"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn_demo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Demo" />
</LinearLayout>
</LinearLayout>
</ScrollView>
我用
进行排序let cal = NSCalendar.currentCalendar()
let d1 = cal.dateFromComponents(
{
let comp = NSDateComponents()
comp.year = 2015
comp.month = 11
comp.day = 8
return comp
}())
let d2 = cal.dateFromComponents(
{
let comp = NSDateComponents()
comp.year = 2015
comp.month = 11
comp.day = 9
return comp
}())
let d3 = cal.dateFromComponents({
let comp = NSDateComponents()
comp.year = 2015
comp.month = 11
comp.day = 6
return comp
}())
let dates = [d1!,d2!,d3!]