【问题标题】:Concatenate two int in swift快速连接两个int
【发布时间】:2017-03-14 21:31:11
【问题描述】:

我尝试连接两个整数值(当前小时和当前分钟)。 例如:

int1: 18
int2: 2

然后我希望它们是一个整数:182。 我使用此代码获取当前小时和当前分钟:

// get the current date and time
    let currentDateTime = Date()

    // get the user's calendar
    let userCalendar = Calendar.current

    // choose which date and time components are needed
    let requestedComponents: Set<Calendar.Component> = [
        .year,
        .month,
        .day,
        .hour,
        .minute,
        .second
    ]

    // get the components
    let dateTimeComponents = userCalendar.dateComponents(requestedComponents, from: currentDateTime)

    // now the components are available
    let dtHour = dateTimeComponents.hour   
    let dtMinute = dateTimeComponents.minute 

然后我认为我可以将这两个整数转换为字符串而不是返回 int 时将它们连接起来,这样我就有了大的 int 值。我用以下几行完成了这项工作:

let strHour = String(describing: dtHour)
    let strMinute = String(describing: dtMinute)

    var currenttime : String = strHour
    currenttime += strMinute

    //reconvert to int
    let ct: Int? = Int(currenttime)

    print("currentTime as Int   : ", ct)
    print("currenttime as String: ", currenttime)

第一次打印的输出是:

currentTime as Int : nil

第二次打印的输出是:

当前时间作为字符串:可选(18)可选(2)

是的,我知道如果当前分钟小于十分钟,我必须解决分钟问题,我必须首先插入零,但我不明白为什么我不能将字符串转换回 int 所以它是一个大字符串。

那么有没有一种正确的方法来连接两个整数,然后将它们重新转换回一个大的 int 值?

【问题讨论】:

  • DateComponents的所有属性都是可选的,比较stackoverflow.com/questions/40362516/…
  • 备注:使用String(describing:) 通常是错误的解决方案。它使您的代码编译,但结果不是您真正想要的。
  • 当然你不需要任何字符串转换:let ct = dateTimeComponents.hour! * 100 + dateTimeComponents.minute!
  • 我建议您重新考虑将连接值转换为整数。它不是一个数字:它是一个数字序列。只需将其保留为字符串即可。
  • @MartinR 我有点怀疑 OP 是否知道他自己想要的格式,但请注意,使用固定乘数 100 几个小时会产生一种不同于 OP 分钟的格式范围0..&lt;10;例如1802 用于 OP 示例,而不是 182

标签: swift


【解决方案1】:

下面的代码打印出来:

当前时间为 Int : 2249

当前时间为字符串:2249

    // get the current date and time
    let currentDateTime = Date()

    // get the user's calendar
    let userCalendar = Calendar.current

    // choose which date and time components are needed
    let requestedComponents: Set<Calendar.Component> = [
        .year,
        .month,
        .day,
        .hour,
        .minute,
        .second
    ]

    // get the components
    let dateTimeComponents = userCalendar.dateComponents(requestedComponents, from: currentDateTime)

    // now the components are available
    let dtHour = dateTimeComponents.hour   
    let dtMinute = dateTimeComponents.minute

    let strHour = String(dtHour!.description)
    let strMinute = String(dtMinute!.description)

    var currenttime : String = strHour!
    currenttime += strMinute!

    //reconvert to int
    let ct = Int(currenttime)

    print("currentTime as Int   : ", ct!)
    print("currenttime as String: ", currenttime)

【讨论】:

  • 非常感谢,完美!如果分钟是 ,我只是添加了一些代码来插入零
猜你喜欢
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2016-07-27
  • 2017-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多