【问题标题】:Convert part of string to integer将字符串的一部分转换为整数
【发布时间】:2015-07-29 16:47:51
【问题描述】:

我有两个 unicode 和 str 类型的时间值,如下所示:

    time1 = "10:00 AM" #type: str
    time2 = "10:15 AM" #type: unicode

我想将 time1 和 time2 的整数部分(即 10:00 和 10:15)转换为整数并检查 time2 > time1。

有没有办法将部分字符串和unicode转换为整数?

【问题讨论】:

    标签: string python-2.7 unicode integer type-conversion


    【解决方案1】:

    public static void main(String[] args) {

    字符串 s1 = "10:00 AM";

    String s2 = "10:20 AM";
        int s1_mins = toMinutes(toNumber(s1));
        int s2_mins = toMinutes(toNumber(s2));
        if(s1_mins < s2_mins){
            System.out.println(s2 +" is more than "+ s1);
        }else{
            System.out.println(s1 +" is more than "+s2);
        }
    }
    private static String toNumber(String s) {
        String[] timeInNumber = s.split(" ");
        return timeInNumber[0];
    }
    private static int toMinutes(String s) {
        String[] hourMin = s.split(":");
        int hour = Integer.parseInt(hourMin[0]);
        int mins = Integer.parseInt(hourMin[1]);
        int hoursInMins = hour * 60;
        return hoursInMins + mins;
    }
    

    上面的代码对你有帮助。

    【讨论】:

    • 问题被标记为python 所以我不认为你的Java代码对OP有帮助
    • @vinodreddy 感谢您的建议。但是,我发现对我的程序使用模块 datetime 是有效的。
    【解决方案2】:

    您应该改用datetimetime,它提供了比较日期时间对象的选项:

    from datetime import datetime
    
    time_obj1 = datetime.strptime(time1, '%I:%M %p')
    time_obj2 = datetime.strptime(time2, '%I:%M %p')
    
    if time_obj1 > time_obj2:
        ...
    

    【讨论】:

    • 谢谢。有用。我正在寻找这样的模块。还有一个问题。当我尝试打印 time_obj1 时,我得到了 1900-01-01 10:00:00 你知道第一部分“1900-01-01”代表什么吗?
    • @Dennis,是的,如果您不提供日期,则默认为 1900 年 1 月 1 日。我想使用 Time 类会更好。
    猜你喜欢
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    相关资源
    最近更新 更多