Преобразуйте 12-часовую дату/время в 24-часовую дату/время

Ответ - поместить mssql-jdbc-7.0.0.jre8.jar lib в папку развернутой войны WEB-INF / lib, потому что gradle не делает этого автоматически.

10
задан Alex B 13 January 2009 в 18:07
поделиться

6 ответов

Используя Perl и изготовленный вручную regexes вместо средств как strptime:

#!/bin/perl -w
while (<>)
{
    # for date times that don't use leading zeroes, use this regex instead:
    # (?:\d{1,2}/\d{1,2}/\d{4} )(\d{1,2})(?::\d\d:\d\d) (AM|PM)
    while (m%(?:\d\d/\d\d/\d{4} )(\d\d)(?::\d\d:\d\d) (AM|PM)%)
    {
        my $hh = $1;
        $hh -= 12 if ($2 eq 'AM' && $hh == 12);
        $hh += 12 if ($2 eq 'PM' && $hh != 12);
        $hh = sprintf "%02d", $hh;
        # for date times that don't use leading zeroes, use this regex instead:
        # (\d{1,2}/\d{1,2}/\d{4} )(\d{1,2})(:\d\d:\d\d) (?:AM|PM)
        s%(\d\d/\d\d/\d{4} )(\d\d)(:\d\d:\d\d) (?:AM|PM)%$1$hh$3%;
    }
    print;
}

Это очень суетливо - но также и преобразовывает возможно несколько меток времени на строку.

Обратите внимание, что преобразование для/PM к 24-часовому, не тривиально.

  • 0:01-> 0:01
  • 12:01-> 12:01
  • 1:30-> 1:30
  • 13:30-> 13:30

Теперь протестированный:

perl ampm-24hr.pl <<!
12/24/2005 12:01:00 AM
09/22/1999 12:00:00 PM
12/12/2005 01:15:00 PM
01/01/2009 01:56:45 AM
12/30/2009 10:00:00 PM
12/30/2009 10:00:00 AM
!

12/24/2005 00:01:00
09/22/1999 12:00:00
12/12/2005 13:15:00
01/01/2009 01:56:45
12/30/2009 22:00:00
12/30/2009 10:00:00

Добавленный:

В то, Что является Простым Способом Преобразовать Между,/PM Время и 24-часовое Время в JavaScript, альтернативный алгоритм обеспечивается для преобразования:

$hh = ($1 % 12) + (($2 eq 'AM') ? 0 : 12);

Всего один тест..., вероятно, более опрятный.

12
ответ дан 3 December 2019 в 16:11
поделиться

Используйте модуль даты и времени Python некоторым образом как это:

import datetime

infile = open('input.txt')
outfile = open('output.txt', 'w')
for line in infile.readlines():
  d = datetime.strptime(line, "input format string")
  outfile.write(d.strftime("output format string")

Непротестированный код без проверки ошибок. Также это читает весь входной файл в памяти перед запуском. (Я знаю, что существует много комнаты для улучшений как с оператором... Я делаю это общественной записью Wiki, если кому-либо нравится добавлять что-то),

4
ответ дан 3 December 2019 в 16:11
поделиться

Здесь я преобразовал 24-часовую систему в 12-часовую систему. Попытайтесь использовать этот метод для своей проблемы.

    DateFormat fmt = new SimpleDateFormat("yyyyMMddHHssmm");

    try {
        Date date =fmt.parse("20090310232344");

        System.out.println(date.toString());
        fmt = new SimpleDateFormat("dd-MMMM-yyyy hh:mm:ss a ");
        String dateInString = fmt.format(date);
        System.out.println(dateInString);


    } catch (Exception e) {
        System.out.println(e.getMessage());
    } 

  RESULT:  
   Tue Mar 10 23:44:23 IST 2009   
   10-March-2009 11:44:23 PM 
0
ответ дан 3 December 2019 в 16:11
поделиться

Это могло бы быть слишком простыми взглядами, но почему бы не импортировать его в Excel, выбрать весь столбец и изменить формат даты, затем реэкспортировать как файл с разделением табуляцией? (Я не протестировал это, но это так или иначе звучит логичным мне :)

0
ответ дан 3 December 2019 в 16:11
поделиться

Так как у Вас есть несколько языков, я предложу следующий алгоритм.

1 Проверка метка времени для существования строки "PM".

2a, Если PM не существует, просто преобразуйте метку времени в дату и время, возражают и продолжаются.

2b, Если PM действительно существует, преобразуйте метку времени в объект даты и времени, добавьте 12 часов и продолжите двигаться.

-1
ответ дан 3 December 2019 в 16:11
поделиться

Чтобы просто преобразовать поле часа в python:

def to12(hour24):
    return (hour24 % 12) if (hour24 % 12) > 0 else 12

def IsPM(hour24):
    return hour24 > 11

def to24(hour12, isPm):
    return (hour12 % 12) + (12 if isPm else 0)

def IsPmString(pm):
    return "PM" if pm else "AM"

def TestTo12():    
    for x in range(24):
        print x, to12(x), IsPmString(IsPM(x))

def TestTo24():
    for pm in [False, True]:
        print 12, IsPmString(pm), to24(12, pm)
        for x in range(1, 12):
            print x, IsPmString(pm), to24(x, pm)
1
ответ дан 3 December 2019 в 16:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: