检查哪个日期最接近今天

时间:2015-11-07 12:03:20

标签: arrays swift nsdate

我有一系列NSDates,我希望能够检查每一个NSDates并按顺序排列哪一个最接近今天。

这样做有什么方法或功能吗?例如,这是我的日期:

var dateArr = ["2015-11-08", "2015-11-09", "2015-11-10"]

我现在想要迭代它们并按最近日期到当前日期的顺序排列。

2 个答案:

答案 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!]