Tag: 格式化

DateTimeFormatter自动更正无效(语法上可能)的日历日期

当您尝试超出可能范围的日期时,Java DateTimeFormatter会引发exception,例如: DateTimeFormatter dtf = DateTimeFormatter.ofPattern(“M/d/yyyy”); String dateString = “12/32/2015”; LocalDate ld = LocalDate.parse(dateString, dtf); 将抛出: Exception in thread “main” java.time.format.DateTimeParseException: Text ’12/32/2015′ could not be parsed: Invalid value for DayOfMonth (valid values 1 – 28/31): 32 但是当我输入一个无效的日历日期时,它的标准在语法上仍然可行,它会将其自动更正为有效日期,例如: DateTimeFormatter dtf = DateTimeFormatter.ofPattern(“M/d/yyyy”); String dateString = “2/31/2015”; LocalDate ld = LocalDate.parse(dateString, dtf); 它成功解析但自动更正到2015-02-28 。 我不希望这种行为,我希望它在日期不是有效的日历日期时仍然抛出exception。 是否有可以为此设置的内置选项,或者我是否真的必须尝试手动筛选出这些实例?

使用java中字符串的正/负前缀解析数字

在java中解析数字是非常直接的,即如果字符串格式为‘n’或‘-n’ ,则使用Integer.parseInt(s),但不幸的是它无法解析‘+ n’格式的字符串。 那么,如果它包含正或负前缀: ‘+ n’或‘-n’,那么从java中解析数字的最有效/优雅的方法是什么?

为什么DecimalFormat允许字符作为后缀?

我正在使用DecimalFormat来解析/validation用户输入。 不幸的是,它在解析时允许字符作为后缀。 示例代码: try { final NumberFormat numberFormat = new DecimalFormat(); System.out.println(numberFormat.parse(“12abc”)); System.out.println(numberFormat.parse(“abc12”)); } catch (final ParseException e) { System.out.println(“parse exception”); } 结果: 12 parse exception 我实际上期望两者都有一个解析exception。 如何告诉DecimalFormat不允许输入”12abc” ?

使用Java将电话号码转换为国际格式(E.164)的最佳方法是什么?

使用Java将电话号码转换为国际格式(E.164)的最佳方法是什么? 鉴于“电话号码”和国家/地区ID(假设是ISO国家/地区代码),我想将其转换为标准的E.164国际格式电话号码。 我相信我可以很容易地手工完成 – 但我不确定它在所有情况下都能正常工作。 您建议使用哪个Java框架/库/实用程序来完成此任务? PS“电话号码”可以是公众可识别的任何内容 – 例如 * (510) 786-0404 * 1-800-GOT-MILK * +44-(0)800-7310658 最后一个是我最喜欢的 – 这是有些人在英国写他们的号码并且意味着你应该使用+44,或者你应该使用0。 E.164格式编号应全部为数字,并使用完整的国际国家代码(例如+ 44)

如何打印Double而不用逗号

使用toString() ,Double添加逗号(5143打印为5,143)。 如何禁用逗号?

java中的数字格式使用Lakh格式而不是百万格式

我尝试过使用NumberFormat和DecimalFormat 。 即使我使用的是en-In语言环境,数字也会以西方格式进行格式化。 有没有选项来格式化数字格式的数字呢? 例如 – 我希望NumberFormatInstance.format(123456)给出1,23,456.00而不是123,456.00 (例如,使用本维基百科页面上描述的系统)。

在String.format()中选择参数

在C#您可以使用para 2: {2}指定用于格式化字符串的参数。 这允许在任意位置和多次使用参数。 有没有办法用标准的java做到这一点?

Java:格式数以百万计

有没有办法使用DecimalFormat(或其他一些标准格式化程序)来格式化这样的数字: 1,000,000 => 1.00M 1,234,567 => 1.23M 1,234,567,890 => 1234.57M 基本上将一些数字除以100万,保留2个小数位,并在末尾拍一个“M”。 我已经考虑过创建一个新的NumberFormat子类,但它看起来比我想象的要复杂。 我正在编写一个API,其格式方法如下所示: public String format(double value, Unit unit); // Unit is an enum 在内部,我将Unit对象映射到NumberFormatters。 实现是这样的: public String format(double value, Unit unit) { NumberFormatter formatter = formatters.get(unit); return formatter.format(value); } 请注意,因为这个,我不能指望客户端除以100万,我不能只使用String.format()而不将它包装在NumberFormatter中。

如何在Java中使用String.format()?

我是Java的初学者,我正在使用newboston的java教程(youtube)。 在教程36-37,他开始使用String.format(); 他在过去的教程中没有解释过。 这是他正在制作的课程的代码: public class tuna { private int hour; private int minute; private int second; public void setTime(int h, int m, int s){ hour = ((h >= 0 && h = 0 && m = 0 && s < 60) ? s : 0); } public String toMilitary(){ return String.format("%02d:%02d:%02d", hour, minute, second); […]

如何在Java中按语言环境格式化日期?

我需要将日期格式化为具有多种语言的应用程序,格式化日期的最佳方式是什么,因为每个国家/地区都有不同类型的日期格式,因此可以按区域设置格式化日期吗?