HackerRank Time Conversion problem solution

In this HackerRank Time Conversion problem solution given a time in 12-hour AM/PM format, convert it to military (24-hour) time.

Note: – 12:00:00AM on a 12-hour clock is 00:00:00 on a 24-hour clock.

– 12:00:00PM on a 12-hour clock is 12:00:00 on a 24-hour clock.

Example

s = ’12:01:00PM’

Return ’12:01:00′.

s = ’12:01:00AM’

Return ’00:01:00′.

Function Description

Complete the timeConversion function in the editor below. It should return a new string representing the input time in 24 hour format.

timeConversion has the following parameter(s):

string s: a time in 24 hour format

Returns

string: the time in 24 hour format

Input Format

A single string s that represents a time in 12-hour clock format (i.e.:hh:mm:ssAM or hh:mm:ssPM).

Constraints

All input times are valid

Hackerrank time conversion problem solution
Hackerrank time conversion problem solution

Problem solution in Python.

#!/bin/python3

import os
import sys

#
# Complete the timeConversion function below.
#
def timeConversion(s):
    if s[-2:] == "AM" and s[:2] == "12": 
        return "00" + s[2:-2] 
    elif s[-2:] == "AM": 
        return s[:-2]
    elif s[-2:] == "PM" and s[:2] == "12": 
        return s[:-2] 
    else:
       ans = int(s[:2]) + 12
       return str(str(ans) + s[2:8]) 
        
    
if __name__ == '__main__':
    f = open(os.environ['OUTPUT_PATH'], 'w')

    s = input()

    result = timeConversion(s)

    f.write(str(result) + 'n')

    f.close()

Problem solution in Java.

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String dt = sc.next();
        char ap = dt.charAt(dt.length() - 2);
        dt = dt.substring(0, dt.length() - 2);
        if (ap == 'A') {
            int hh = Integer.parseInt(dt.substring(0, 2));
            if (hh == 12) hh = 0;
            String s = Integer.toString(hh);
            if (s.length() == 1) {
                s = "0" + s;
            }
            System.out.println(s + dt.substring(2, dt.length()));
        } else {
            int hh = Integer.parseInt(dt.substring(0, 2));
            if (hh != 12) hh += 12;
            String s = Integer.toString(hh);
            if (s.length() == 1) {
                s = "0" + s;
            }
            System.out.println(hh + dt.substring(2, dt.length()));
        }
    }
}

 

Problem solution in C++ programming.

#include <cstdio>
#include <iostream>
#include <vector>

using namespace std;
using std::vector;

void solve(){
	int hour, minute, second;
	char c1, c2;
	scanf("%d:%d:%d%c%c", &hour, &minute, &second, &c1, &c2);
	// printf("%dn%dn%dn%cn%c", hour, minute, second, c1, c2);
	hour = hour % 12;
	if (c1 == 'P'){
		hour = hour + 12;
	}
	printf("%02d:%02d:%02dn", hour, minute, second);

	return;
}

int main(){

	solve();

    return 0;
}

 

Problem solution in C programming.

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
   char t[10];
   scanf("%s", t);

   if(t[8] == 'P') {
     if(t[0] != '1' || t[1] != '2') {
       t[0]++;
       t[1]+=2;
     }
   } else {
     if(t[0] == '1' && t[1] == '2') {
       t[0] = '0';
       t[1] = '0';
     }
   }
   t[8] = '';
   printf("%sn", t);
    
   return 0;
}

 

Problem solution in JavaScript programming.

function processData(input) {
    input = input.split(':');
    var hours = parseInt(input[0]);
    var timeFrame = input[2].slice(2);
    var seconds = input[2].slice(0,2);
    if ((timeFrame === 'PM') && (hours !== 12)) {
        hours += 12;
    }
    if ((hours === 12) && (timeFrame === 'AM')) {
        hours = '00';
    } else if (hours < 10) {
        hours = '0' + hours.toString();
    } else {
        hours = hours.toString();
    }
    console.log([hours, input[1], seconds].join(':'));
};

process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
    _input += input;
});

process.stdin.on("end", function () {
   processData(_input);
});

 

3 thoughts on “HackerRank Time Conversion problem solution”

  1. public static String timeConversion(String s) {
    String ampm = s.substring(s.length()-2, s.length()-1);
    StringBuffer sb = new StringBuffer(s.substring(0, s.length()-2));
    int start = Integer.parseInt(s.substring(0, 2));
    if(s.contains("P")){
    String sb1 = start == 12 ? "12": ""+(start+12);
    sb.replace(0, 2, "" +sb1);
    System.out.println(sb);
    } else {
    String sb1 = start == 12 ? "00": start > 9? ""+start: "0" +start;
    sb.replace(0, 2, "" +sb1);
    System.out.println(sb);
    }
    return sb.toString();
    }
    }

  2. n = input().replace("PM", ":PM").replace("AM", ":AM").split(":")
    if n[-1] == "PM":
    if n[0] != "12":
    n[0] = str(int(n[0]) + 12)
    else:
    if n[0] == "12":
    n[0] = "00"
    del n[3]
    time = ":".join(n)
    print(time)

Comments are closed.