小编Ole*_*.V.的帖子

Java 日期格式 - GMT +04:00

我必须解析以下日期

2016 年 9 月 30 日星期五 18:31:00 GMT+04:00

并且它不适用于以下模式:

new SimpleDateFormat("EEE MMM dd HH:mm:ss z YYYY", Locale.ENGLISH);

我得到以下日期作为输出:Fri Jan 01 18:31:00 GMT+04:00 2016。

你能告诉我我做错了什么吗?

java simpledateformat datetime-parsing

4
推荐指数
1
解决办法
7906
查看次数

Java 8日期/时间:即时,无法在索引19处解析

我有以下代码:

String dateInString = "2016-09-18T12:17:21:000Z";
Instant instant = Instant.parse(dateInString);

ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Europe/Kiev"));
System.out.println(zonedDateTime);
Run Code Online (Sandbox Code Playgroud)

它给了我以下异常:

线程“主”中的异常java.time.format.DateTimeParseException:无法在java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:的索引19处解析文本'2016-09-18T12:17:21:000Z' 1949)在java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)在java.time.Instant.parse(Instant.java:395)在core.domain.converters.TestDateTime.main(TestDateTime.java:10 )

当我将最后一个冒号更改为句号时:

String dateInString = "2016-09-18T12:17:21.000Z";
Run Code Online (Sandbox Code Playgroud)

…然后执行正常:

2016-09-18T15:17:21 + 03:00 [欧洲/基辅]

因此,问题是-如何使用Instant和解析日期DateTimeFormatter

java time parsing date java.time.instant

4
推荐指数
1
解决办法
6606
查看次数

在Stream中记录

我试图将这段代码转换为Java 8流:

if(list!=null && list.size()>0){
    Actor actor = null;
    for(Actor actor:list){
        log.info("Actor being read: "  actor.getCode());
        List areaList = areaDAO.getArea(actor.getCode());
        if (areaList.size() > 0)
        {
            actor.setArea((String) areaList.get(0));
            log.info("Area{" + areaList.get(0)
                     + "} is fetched for actor{" + actor.getCode() + "}.");
        }
        this.getContext().setReadCount(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何处理这种情况下的日志记录?这是一个好习惯吗?感谢您的帮助.谢谢

java java-8 java-stream

4
推荐指数
2
解决办法
7095
查看次数

双大括号初始化的替代方案

我有一个以下形式的嵌套集合:

HashMap<String, HashMap<String, List<String>>> errorList;
Run Code Online (Sandbox Code Playgroud)

现在我使用双括号内联初始化它,如下所示

errorList.put(tempName, new HashMap<String, List<String>>() {{
    put("upl", new ArrayList<String>() {{ add("Y"); add("Upload Success"); }});
}});
Run Code Online (Sandbox Code Playgroud)

tempName这位于 foreach 循环中,每次迭代时值都会发生变化。我这样做是因为我无法使用List<String>or的实例HashMap<String,List<String>>,因为每次我更改该实例中的值时,它都会反映在它嵌套的集合中。所以我被迫使用双括号初始化创建新实例。

事情是:我想使用列表对象。代替

new ArrayList<String>() {{ add("Y"); add("Upload Success"); }}
Run Code Online (Sandbox Code Playgroud)

我想使用一个变量。

我怎样才能做到这一点?

java collections list hashmap double-brace-initialize

4
推荐指数
1
解决办法
2657
查看次数

从字符串中解析日期时间,偏移量为一位数小时

我需要用 Java 解析日期。我有字符串值2018-05-15 09:32:51.550082 +3:00,我需要将其解析为日期时间。我尝试解析为ZonedDateTime,但在索引 10 处出现错误。尝试使用DateTimeFormatter解析器 'yyyy-MM-dd HH:mm:ss.SSSSSS Z'+3:00进行解析并在索引 26 处出现错误。显然我的 UTC 偏移量无法解析. 我怎样才能做到这一点?

java parsing date datetime-parsing timezone-offset

4
推荐指数
1
解决办法
1149
查看次数

如何转换UTC日期字符串并删除Java中的T和Z?

我正在使用Java 1.7。

尝试转换:

2018-05-23T23:18:31.000Z 
Run Code Online (Sandbox Code Playgroud)

进入

2018-05-23 23:18:31
Run Code Online (Sandbox Code Playgroud)

DateUtils类:

public class DateUtils {

    public static String convertToNewFormat(String dateStr) throws ParseException {
        TimeZone utc = TimeZone.getTimeZone("UTC");
        SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
        sdf.setTimeZone(utc);
        Date convertedDate = sdf.parse(dateStr);
        return convertedDate.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试使用它时:

String convertedDate = DateUtils.convertToNewFormat("2018-05-23T23:18:31.000Z");
System.out.println(convertedDate);
Run Code Online (Sandbox Code Playgroud)

得到以下异常:

Exception in thread "main" java.text.ParseException: Unparseable date: "2018-05-23T23:22:16.000Z"
   at java.text.DateFormat.parse(DateFormat.java:366)
   at com.myapp.utils.DateUtils.convertToNewFormat(DateUtils.java:7)
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么?

有没有更简单的方法(例如Apache Commons lib)?

java utc parseexception java-7 datetime-parsing

4
推荐指数
3
解决办法
1万
查看次数

Gson java.lang.IllegalArgumentException:没有时区指示器

我在使用 Gson 时遇到了奇怪的错误。

我是这样创建的

mGson = new GsonBuilder().registerTypeAdapter(beelineItemType, new ItemsDeserializer()).setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
Run Code Online (Sandbox Code Playgroud)

我的 json 对象是这样的:

"EpgStartDate" : "2018-08-16T18:00:00" 
Run Code Online (Sandbox Code Playgroud)

但是当我尝试反序列化它时,我收到此错误:

ccom.google.gson.JsonSyntaxException: 2018-08-16T06:00:00

caused by: java.text.ParseException: Failed to parse date ["2018-08-16T06:00:00']: No time zone indicator (at offset 0)

Caused by: java.lang.IllegalArgumentException: No time zone indicator
Run Code Online (Sandbox Code Playgroud)

我不明白在哪里放置时区以及如何放置。我在塞尔维亚,所以应该在哪里、如何以及什么时区。如果有人可以提供帮助那就太好了:D

java timezone android gson datetime-parsing

4
推荐指数
1
解决办法
7702
查看次数

验证Java 6上的Hijri日期(伊斯兰日历)

我想验证Hijri日期.在我的应用程序中,Hijri日期将以格式化dd/MM/YYYY.我想在Joda Time API中验证日期是否有效.

例如,我有日期:

String date = "30/02/1403";
String Pattern = "dd/MM/YYYY";
Run Code Online (Sandbox Code Playgroud)

你能帮我验证Hijri约会吗?

我的限制是:

  • 我想在Java 6中验证.我不能在Java 8中使用.
  • 我必须验证伊斯兰历法.用Hijri日期验证.我的日期已经是Hijri格式.我必须验证日期是否与伊斯兰日历有效.
  • 在伊斯兰历法中,30/02/1403是第2个月的有效日期.

java validation jodatime java-6 hijri

4
推荐指数
1
解决办法
449
查看次数

解析 LocalDate 但得到 DateTimeParseException;dd-MMM-uuuu

我正在尝试将 a 转换StringLocalDateusing DateTimeFormatter,但收到异常:

java.time.format.DateTimeParseException:无法在索引 5 处解析文本“ 2021-10-31 ”

我的代码是

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-uuuu");
String text = "2021-10-31";
LocalDate date = LocalDate.parse(text, formatter);
Run Code Online (Sandbox Code Playgroud)

我正在尝试从输入日期转换2021-10-3131-Oct-2021.

java java-time localdate datetimeformatter datetimeparseexception

4
推荐指数
1
解决办法
856
查看次数

如何使用 LocalDate 设置月份和年份?

在此输入图像描述

\n

我想用这两个数字选择器更改月份和年份,但我不知道如何更改日期。我想要做的是:当我单击 BottomSheetDialog 上的“确定”按钮时,我想设置月份和年份。你能帮我吗?我尝试过,但在互联网上找不到任何解决方案。如果您帮助我,我将不胜感激。谢谢。

\n
public class PlannerFragment extends Fragment implements CalendarAdapter.OnItemListener{\n\nprivate TextView monthYearTextView;\nprivate TextView monthYearPickerOKTextView;\nprivate ImageView nextMonthImageView, previousMonthImageView;\nprivate RecyclerView calendarRecyclerView;\nprivate LocalDate selectedDate; /// tekrar buna bak\xc4\xb1lacak\nprivate NumberPicker monthNumberPicker, yearNumberPicker;\n\n@Override\npublic View onCreateView(LayoutInflater inflater, ViewGroup container,\n                         Bundle savedInstanceState) {\n    getActivity().setTitle("Planner");\n    View v = inflater.inflate(R.layout.fragment_planner, container, false);\n\n    previousMonthImageView = v.findViewById(R.id.previous_month_image_view);\n    nextMonthImageView = v.findViewById(R.id.next_month_image_view);\n\n    calendarRecyclerView = v.findViewById(R.id.calendar_recycler_view);\n    monthYearTextView = v.findViewById(R.id.month_year_text_view);\n\n    selectedDate = LocalDate.now();\n\n    setMonthYear();\n\n    previousMonthImageView.setOnClickListener(new View.OnClickListener() {\n        @Override\n        public void onClick(View view) {\n            selectedDate = selectedDate.minusMonths(1);\n            setMonthYear();\n        }\n    });\n\n    nextMonthImageView.setOnClickListener(new View.OnClickListener() {\n        @Override\n …
Run Code Online (Sandbox Code Playgroud)

java android-calendar java-time localdate

4
推荐指数
1
解决办法
7314
查看次数