我必须解析以下日期
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。
你能告诉我我做错了什么吗?
我有以下代码:
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 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)
但是我不知道如何处理这种情况下的日志记录?这是一个好习惯吗?感谢您的帮助.谢谢
我有一个以下形式的嵌套集合:
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 解析日期。我有字符串值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 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)?
我在使用 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
我想验证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约会吗?
我的限制是:
我正在尝试将 a 转换String为LocalDateusing 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-31为31-Oct-2021.
java java-time localdate datetimeformatter datetimeparseexception
我想用这两个数字选择器更改月份和年份,但我不知道如何更改日期。我想要做的是:当我单击 BottomSheetDialog 上的“确定”按钮时,我想设置月份和年份。你能帮我吗?我尝试过,但在互联网上找不到任何解决方案。如果您帮助我,我将不胜感激。谢谢。
\npublic 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)