Class DateTimeFormatter 為什麼是星期天,使用ee卻show 「01」?

joey kang 2020-04-19 11:40:23
package Code;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Period;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;
import java.time.temporal.TemporalAdjusters;

import static java.lang.System.*;
class CustomizedException extends RuntimeException{}

public class Test
{

public static void main(String[] args)
{
LocalDate no=LocalDate.of(2020,4,19);
DateTimeFormatter d=DateTimeFormatter.ofPattern("yyyy-'W' w-ee");
DateTimeFormatter d1=DateTimeFormatter.ofPattern("yyyy-'W' w-eee");
String nDate=no.format(d);
String nDate1=no.format(d1);
System.out.println(nDate);
System.out.println(nDate1);
}
}
...全文
215 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
joey kang 2020-04-21
  • 打赏
  • 举报
回复
請問如果想要週日改為「07」,週一改為「01」,照ISO8601的標準,要怎麼改呢?
qq_39936465 2020-04-21
  • 打赏
  • 举报
回复
我的api的说明有问题,我没看仔细,说明例子是错误的。周日为1
qq_39936465 2020-04-21
  • 打赏
  • 举报
回复
引用 3 楼 joey kang 的回复:
再麻煩您看一下,謝謝^_^
date里 周日为 1,一周的第一天是周日,星期一是第2天,和中国人的习惯不一样,是西方的习惯问题,看下日历就知道了。
joey kang 2020-04-21
  • 打赏
  • 举报
回复
很膨派的一篇回覆,猶如一盞明燈,指引我走出五里霧中,感謝您
qq_39936465 2020-04-21
  • 打赏
  • 举报
回复

class Test3 {

	public static void main(String[] args) {

		LocalDate now1 = LocalDate.of(2020, 4, 19);
		LocalDate now2 = LocalDate.of(2020, 4, 20);
		Map<Long, String> map = new HashMap<Long, String>() {
			{
				put(1L, "星期一");
				put(2L, "星期二");
				put(3L, "星期三");
				put(4L, "星期四");
				put(5L, "星期五");
				put(6L, "星期六");
				put(7L, "星期日");
			}
		};

		DateTimeFormatter dtf = new DateTimeFormatterBuilder().parseCaseInsensitive()
				.appendValue(IsoFields.WEEK_BASED_YEAR, 4, 10, SignStyle.EXCEEDS_PAD)
				.appendLiteral("-W")
				.appendValue(IsoFields.WEEK_OF_WEEK_BASED_YEAR, 2)
				.appendLiteral('-')
				.appendValue(DAY_OF_WEEK, 2)
				/*想用中文字符用下面的语句替换上面一句
				.appendText(DAY_OF_WEEK, map)*/
				.parseCaseInsensitive()
				.toFormatter(Locale.CHINA);
		String nDate = now1.format(dtf);
		String nDate1 = now2.format(dtf);
		System.out.println(nDate);
		System.out.println(nDate1);
	}
}

qq_39936465 2020-04-21
  • 打赏
  • 举报
回复
引用 6 楼 joey kang 的回复:
請問如果想要週日改為「07」,週一改為「01」,照ISO8601的標準,要怎麼改呢?
发现可以用默认格式ISO_WEEK_DATE

                LocalDate now1 = LocalDate.of(2020, 4, 19);
		LocalDate now2=LocalDate.of(2020, 4, 20);
		String nDate = now1.format(DateTimeFormatter.ISO_WEEK_DATE);
		String nDate1 = now2.format(DateTimeFormatter.ISO_WEEK_DATE);
		System.out.println(nDate);
		System.out.println(nDate1);	
输出结果

2020-W16-7
2020-W17-1
qq_39936465 2020-04-21
  • 打赏
  • 举报
回复
引用 6 楼 joey kang 的回复:
請問如果想要週日改為「07」,週一改為「01」,照ISO8601的標準,要怎麼改呢?
实际数值和java的api有出入,直接用下面的语句可以获取到你想要的结果。 System.out.println((int)no.get(ChronoField.DAY_OF_WEEK));
qq_39936465 2020-04-20
  • 打赏
  • 举报
回复
引用 楼主 joey kang 的回复:
package Code; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Period; import java.time.temporal.ChronoUnit; import java.time.temporal.Temporal; import java.time.temporal.TemporalAdjusters; import static java.lang.System.*; class CustomizedException extends RuntimeException{} public class Test { public static void main(String[] args) { LocalDate no=LocalDate.of(2020,4,19); DateTimeFormatter d=DateTimeFormatter.ofPattern("yyyy-'W' w-ee"); DateTimeFormatter d1=DateTimeFormatter.ofPattern("yyyy-'W' w-eee"); String nDate=no.format(d); String nDate1=no.format(d1); System.out.println(nDate); System.out.println(nDate1); } }
e,ee,eee,eeee,eeeee 对应 2; 02; Tue; Tuesday; T 用中文便表示就是 2,02,周二 ,星期二,二
joey kang 2020-04-20
  • 打赏
  • 举报
回复
再麻煩您看一下,謝謝^_^
joey kang 2020-04-20
  • 打赏
  • 举报
回复
引用 1 楼 qq_39936465 的回复:
[quote=引用 楼主 joey kang 的回复:] package Code; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Period; import java.time.temporal.ChronoUnit; import java.time.temporal.Temporal; import java.time.temporal.TemporalAdjusters; import static java.lang.System.*; class CustomizedException extends RuntimeException{} public class Test { public static void main(String[] args) { LocalDate no=LocalDate.of(2020,4,19); DateTimeFormatter d=DateTimeFormatter.ofPattern("yyyy-'W' w-ee"); DateTimeFormatter d1=DateTimeFormatter.ofPattern("yyyy-'W' w-eee"); String nDate=no.format(d); String nDate1=no.format(d1); System.out.println(nDate); System.out.println(nDate1); } }
e,ee,eee,eeee,eeeee 对应 2; 02; Tue; Tuesday; T 用中文便表示就是 2,02,周二 ,星期二,二[/quote] 您好, 您說,e,ee,eee,eeee,eeeee 对应 2; 02; Tue; Tuesday,今天是2020-04-20星期一,程式的結果如下: 2020-W 17-02 2020-W 17-星期一 星期一應該對應「01」 但結果卻跑出「02」,應該要如何改成像您說的那樣呢?我的系統看來是以星期天為一週的第一天啊!

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧