Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日期差_Java_Ios_Swift_Time - Fatal编程技术网

Java 日期差

Java 日期差,java,ios,swift,time,Java,Ios,Swift,Time,我找不到用swift写这封信的方法,但我如何计算现在和年底之间的日期差呢?我已经在java中完成了这项工作,但在swift中找不到同样的方法。以下是我编写的java逻辑: Calendar today = Calendar.getInstance(); Calendar endOfYear = Calendar.getInstance(); endOfYear.setTime(new Date(0)); endOfYear.set(

我找不到用swift写这封信的方法,但我如何计算现在和年底之间的日期差呢?我已经在java中完成了这项工作,但在swift中找不到同样的方法。以下是我编写的java逻辑:

        Calendar today = Calendar.getInstance();
        Calendar endOfYear = Calendar.getInstance();
        endOfYear.setTime(new Date(0));
        endOfYear.set(Calendar.DAY_OF_MONTH, 31);
        endOfYear.set(Calendar.MONTH, 11);
        endOfYear.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR));

        double t = endOfYear.getTimeInMillis() - today.getTimeInMillis();
        String time = new SimpleDateFormat("0:ss", Locale.US).format(t);
这当然只会输出我在swift中尝试的倒计时秒数

更新:

我所拥有的只是:

func timer() {
    let time = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: NSDateFormatterStyle.NoStyle, timeStyle: NSDateFormatterStyle.MediumStyle)
    timeLabel.text = "\(time)"
}

这正是我不想要的全部时间…

您创建了两个
NSDate
实例,然后使用
CFDateGetIntervalSinceDate(当前时间,年终)

这与您想要的类似(不太准确,但搜索文档,了解如何获得准确的年终日期,包括小时和秒):


花了我一些时间,但这就是我想要的:

    let date = NSDate()
    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components([.Day, .Month, .Year, .Hour, .Minute, .Second, .Nanosecond], fromDate: date)
    let now = NSCalendar.currentCalendar().dateWithEra(1, year: components.year, month: components.month, day: components.day, hour: components.hour, minute: components.minute, second: components.second, nanosecond: components.nanosecond)!
    let newYears = NSCalendar.currentCalendar().dateWithEra(1, year: components.year, month: 12, day: 31, hour: 01, minute: 00, second: 00, nanosecond: 00)!


    let units: NSCalendarUnit = [.Day, .Month, .Year, .Hour, .Minute, .Second]
    let difference = NSCalendar.currentCalendar().components(units, fromDate: now, toDate: newYears, options: [])

    let seconds = difference.second
这是一种计时器格式,类似于它所说的n天,n小时,n分钟,n秒。
谢谢你

考虑到这不是一个代码重构网站,如果你可以添加你的
swift
代码,这样我们就可以找出你做错了什么。有一种更新方法可以通过编程来设置年份,而不是像我写的示例代码那样对其进行编码?我的示例使用了一种原始方法。我很肯定你能自动拿到年终奖。检查NSDate和NSCalendar文档。
    let date = NSDate()
    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components([.Day, .Month, .Year, .Hour, .Minute, .Second, .Nanosecond], fromDate: date)
    let now = NSCalendar.currentCalendar().dateWithEra(1, year: components.year, month: components.month, day: components.day, hour: components.hour, minute: components.minute, second: components.second, nanosecond: components.nanosecond)!
    let newYears = NSCalendar.currentCalendar().dateWithEra(1, year: components.year, month: 12, day: 31, hour: 01, minute: 00, second: 00, nanosecond: 00)!


    let units: NSCalendarUnit = [.Day, .Month, .Year, .Hour, .Minute, .Second]
    let difference = NSCalendar.currentCalendar().components(units, fromDate: now, toDate: newYears, options: [])

    let seconds = difference.second