如何将给定的字符串格式解析为 dd-MMM-yyyy hh:mm:ss:aa?

问题描述 投票:0回答:5

我可以获得输出为

Wed May 11 15:36:08 IST 2016
,但是如何将日期转换为具有所需格式的字符串?

所需格式为:

12-05-2016 16:05:08 pm

我尝试的是,

public class Test {
    public static void main(String args[]) throws ParseException{
        String epoche="1462961108000";
        Long initialLogTime = Long.valueOf(epoche);
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(initialLogTime);
        Calendar fromDateTime = calendar;
        Calendar toDateTime = fromDateTime;
        toDateTime.add(Calendar.MINUTE, 30);
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss:aa");
        String datestring = String.valueOf(fromDateTime.getTime());
        String datestring1 = String.valueOf(toDateTime.getTime());
        System.out.println(datestring); //here output is Wed May 11 15:36:08 IST 2016
        System.out.println(datestring1); // here output is Wed May 11 15:36:08 IST 2016
        Date dates = dateFormat.parse(datestring);
        Date date1s = dateFormat.parse(datestring1);
        System.out.println(dates);
        System.out.println(date1s);
    }
}

我收到的错误是:

Exception in thread "main" java.text.ParseException: Unparseable date: "Wed May 11 16:05:08 IST 2016"
at java.text.DateFormat.parse(DateFormat.java:357)
at test.Test.main(Test.java:27)
java date datepicker
5个回答
9
投票

您需要相应地设置日期格式。这会对你有帮助

    SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:aa");
    System.out.println(dateFormat.format(fromDateTime.getTime()));
    System.out.println(dateFormat.format(toDateTime.getTime()));

0
投票

如果您使用的是java 8,则可以使用

LocalDate 日期 = LocalDate.now();

DateTimeFormatter 格式化程序 = DateTimeFormatter.ofPattern("dd-MMM-yyyy HH:mm:ss:aa");

System.out.println(date.format(formatter));


0
投票

请尝试这个

public static void main(String[] args) {
        String epoche = "1462961108000";
        Date date = new Date(Long.parseLong(epoche));
        DateFormat  sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:aa");
        String strDate = sdf.format(date);
        System.out.println(strDate);
    }

输出

11-05-2016 15:35:08:PM

0
投票

在 Android 中,将 11/10/2017 11:16:46 等字符串传递给函数 ConvertDateTime

   public String ConvertUpdate(String strDate) {

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    try {
        Date d = simpleDateFormat.parse(strDate);
        simpleDateFormat = new SimpleDateFormat("dd MMM yy hh:mm a");

        return simpleDateFormat.format(d);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return null;
}

输出 2017 年 11 月 10 日上午 11:16


0
投票

java.time

2014 年 3 月,Java 8 引入了现代的

java.time
日期时间 API,取代了容易出错的旧版
java.util
日期时间 API
。任何新代码都应使用
java.time
API。

使用现代日期时间 API 的解决方案

  1. 将纪元毫秒转换为
    Instant
    使用
    Instant#ofEpochMilli
    .
  2. 使用所需的
    Instant
    将获得的
    ZonedDateTime
    转换为
    ZoneId
  3. 使用具有所需模式的
    DateTimeFormatter
    格式化结果。通常,am/pm 标记显示为 clock-hour-of-am-pm (1-12)。不过,您可以在模式中使用 a 显示am/pm 标记以及
    一天中的小时 (0-23)

演示:

public class Main {
    public static void main(String[] args) {
        String epoche = "1462961108000";
        Instant instant = Instant.ofEpochMilli(Long.valueOf(epoche));

        // Replace ZoneId.of("Asia/Dhaka") as required e.g. to ZoneId.systemDefault() if
        // your requirement is to get the date-time in your JVM's time zone
        ZonedDateTime zdt = instant.atZone(ZoneId.of("Asia/Dhaka"));

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MM-uuuu HH:mm:ss a");
        String dateString = zdt.format(dtf);
        System.out.println(dateString);
    }
}

输出:

11-05-2016 16:05:08 PM

在线演示

Trail:日期时间了解有关现代日期时间 API 的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.