代码之家  ›  专栏  ›  技术社区  ›  DevRight

如何将包含日期和时间的字符串转换为LocalTime变量

  •  3
  • DevRight  · 技术社区  · 7 年前

    我正在转换一系列 String 包含三个不同时间的

    "00:01:00,00:02:00,00:01:00"

    LocalTime

    for (final String str : downtime) {
          final DependencyDownTime depDownTime = new DependencyDownTime ();
          final String[] strings = str.split (",");
    
          if (strings.length == 3) {
    
               LocalTime start = LocalTime.parse (strings[0]);
               depDownTime.setStartTime (start);
    
               LocalTime end = LocalTime.parse (strings[1]);
               depDownTime.setEndTime (end);
    
               Duration duration = Duration.between (start, end);
               depDownTime.setDuration (duration);
               downTimes.add (depDownTime);
          }
      }
    

    一串 2017-09-13 00:01:00

    如何删除只保留时间的日期字符串?

    SimpleDateFormat

    final DateFormat dateFormat = new SimpleDateFormat ("HH:mm:ss");
    LocalTime start = LocalTime.parse (dateFormat.format (strings[0]));
    depDownTime.setStartTime (start);
    

    但我有一个 java.lang.IllegalArgumentException

    6 回复  |  直到 7 年前
        1
  •  6
  •   user7605325 user7605325    7 年前

    你可以使用 DateTimeFormatter ,然后将其解析为 LocalDateTime 并提取 LocalTime

    String input = "2017-09-13 00:01:00";
    DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    
    LocalTime time = LocalDateTime.parse(input, fmt).toLocalTime();
    

    或者直接将其解析为 ,使用 from 方法:

    LocalTime time = LocalTime.from(fmt.parse(input));
    

    LocalTime time = LocalTime.parse(input, fmt);
    
        2
  •  2
  •   Nishanth    7 年前

    使用DateTimeFormatter(java.time.format.DateTimeFormatter)和LocalDateTime

        String s = "2017-09-13 00:01:00";
    
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    
        LocalTime start = LocalDateTime.parse(s,dtf).toLocalTime();
    
        3
  •  1
  •   eugene-nikolaev    7 年前

    你可以用 String#split 如果您确定字符串的格式已经相同。

    String s = "2017-09-13 00:01:00";
    String[] frags = s.split(" ");
    System.out.println(frags[frags.length - 1]);
    

    00:01:00
    

        4
  •  1
  •   Tamas Rev    7 年前

    String original = "2017-09-13 00:01:15";
    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .parseCaseInsensitive()
            .append(DateTimeFormatter.ISO_LOCAL_DATE)
            .appendLiteral(' ') // this is what you won't find among the default formatters
            .append(DateTimeFormatter.ISO_LOCAL_TIME)
            .toFormatter();
    LocalTime time = LocalTime.parse(original, formatter); // it's cool now
    System.out.println(time); // prints 00:01:15
    
        5
  •  0
  •   Abhishek Honey    7 年前

    这可能会帮助您:

    或者您可以使用另一个答案中所写的拆分函数。

    import java.io.IOException;
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    public class test {
        public static void main(String[] args) throws IOException, ParseException {
            String timestamp = "2017-09-13 00:01:00";
            DateFormat format = new SimpleDateFormat("yyyy-dd-mm HH:mm:ss");
            Date date = format.parse(timestamp);
            System.out.println(date);
    
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
    
            System.out.println(date.getTime());
            System.out.println(date.getHours());
            System.out.println(date.getMinutes());
            System.out.println(date.getSeconds());
        }
    }
    
        6
  •  0
  •   findusl    7 年前

    如果格式 yyyy-mm-dd hh:mm:ss

    LocalTime.parse(strings[0].substring(11))