用java将Jalali日历转换为格鲁吉亚语
我正在使用该类将shamsi date转换为格鲁吉亚语 使用下面的命令,我将Hijri日期转换为格鲁吉亚语用java将Jalali日历转换为格鲁吉亚语,java,date,converter,Java,Date,Converter,我正在使用该类将shamsi date转换为格鲁吉亚语 使用下面的命令,我将Hijri日期转换为格鲁吉亚语 Date dt = JalaliCalendar.getGregorianDate("1397/01/14"); Toast.makeText(getApplicationContext(), dt.toString(), Toast.LENGTH_LONG).show(); 我想将结果显示如下:2018/04/03尝试使用SimpleDataFormatter,如下所示:
Date dt = JalaliCalendar.getGregorianDate("1397/01/14");
Toast.makeText(getApplicationContext(), dt.toString(), Toast.LENGTH_LONG).show();
我想将结果显示如下:2018/04/03尝试使用SimpleDataFormatter,如下所示:
DateFormat df= new SimpleDateFormat( "YYYY/MM/dd" );
String formattedDate = df.format(dt);
尝试使用SimpleDataFormatter,如下所示:
DateFormat df= new SimpleDateFormat( "YYYY/MM/dd" );
String formattedDate = df.format(dt);
警告:除了花两分钟浏览维基百科页面外,我对这两种情况一无所知。但我也许能帮你找到解决办法
java.time
您使用的是多年前被java.time类取代的麻烦的旧日期时间类
time类与的实现捆绑在一起
建议:实现java.time.chrono.chronoloy
我没有看到与java.time捆绑在一起的Jalali日历的任何实现,也没有在这样的项目中看到
我想,如果有人真的贡献了这样一个实现,这可能是理想的。也许可以通过遵循捆绑Java的示例来编写这样的实现
Hijri不是Jalali
下面是我使用HijrahDate类的无知尝试
ld.toString:2018-04-03
hd.toString:Hijrah umalqura AH 1439-07-17
这对于本页所示的Hijri日历似乎是正确的
关于java.time
该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&
该项目现已启动,建议迁移到类
要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是
您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要java.sql.*类
从哪里获得java.time类
,及以后
内置的。
标准JavaAPI的一部分,带有捆绑实现。
Java9添加了一些次要功能和修复。
和
大部分java.time功能都在中向后移植到Java6和Java7。
更高版本的Android捆绑包实现了java.time类。
对于早期的安卓警告:除了花两分钟扫描维基百科页面外,我对任何一个都不知道。但我也许能帮你找到解决办法
java.time
您使用的是多年前被java.time类取代的麻烦的旧日期时间类
time类与的实现捆绑在一起
建议:实现java.time.chrono.chronoloy
我没有看到与java.time捆绑在一起的Jalali日历的任何实现,也没有在这样的项目中看到
我想,如果有人真的贡献了这样一个实现,这可能是理想的。也许可以通过遵循捆绑Java的示例来编写这样的实现
Hijri不是Jalali
下面是我使用HijrahDate类的无知尝试
ld.toString:2018-04-03
hd.toString:Hijrah umalqura AH 1439-07-17
这对于本页所示的Hijri日历似乎是正确的
关于java.time
该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&
该项目现已启动,建议迁移到类
要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是
您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要java.sql.*类
从哪里获得java.time类
,及以后
内置的。
标准JavaAPI的一部分,带有捆绑实现。
Java9添加了一些次要功能和修复。
和
大部分java.time功能都在中向后移植到Java6和Java7。
更高版本的Android捆绑包实现了java.time类。
对于早期的Android在Android上使用my library或Time4A可启用以下开箱即用的简短解决方案:
String input = "1397/01/14";
PersianCalendar jalali =
ChronoFormatter
.ofPattern("yyyy/MM/dd", PatternType.CLDR, Locale.ROOT, PersianCalendar.axis())
.parse(input);
PlainDate gregorian = jalali.transform(PlainDate.axis());
String iso8601 = Iso8601Format.EXTENDED_DATE.format(gregorian);
System.out.println(iso8601); // 2018-04-03
不需要实现自己的日历年表,这通常是一项复杂的任务。如果希望使用斜杠而不是ISO格式获得结果,则只需通过以下方式使用另一个格式化程序:
String output = ChronoFormatter
.ofPattern("yyyy/MM/dd", PatternType.CLDR, Locale.ROOT, PlainDate.axis())
.format(gregorian);
评论中的问题更新:
如果输入包含一个时间部分,那么整个内容就是一个时间戳,而不是日历日期。因此,用户可以解析到某个时刻
TZID tzid = () -> "Asia/Tehran"; // used as default time zone for parsing
ChronoFormatter<Moment> f =
ChronoFormatter.setUpWithOverride(Locale.ENGLISH, PersianCalendar.axis())
.addPattern("yyyy/MM/dd HH:mm[:ss]", PatternType.CLDR) // optional seconds
.build()
.withTimezone(tzid);
Moment expected =
PlainTimestamp.of(2018, 4, 3, 10, 15, 5).inTimezone(tzid);
assertThat(
f.parse("1397/01/14 10:15:05"),
is(expected));
在Android上使用my library或Time4A可启用以下开箱即用的简短解决方案:
String input = "1397/01/14";
PersianCalendar jalali =
ChronoFormatter
.ofPattern("yyyy/MM/dd", PatternType.CLDR, Locale.ROOT, PersianCalendar.axis())
.parse(input);
PlainDate gregorian = jalali.transform(PlainDate.axis());
String iso8601 = Iso8601Format.EXTENDED_DATE.format(gregorian);
System.out.println(iso8601); // 2018-04-03
不需要实现自己的日历年表,这通常是一项复杂的任务。如果希望使用斜杠而不是ISO格式获得结果,则只需通过以下方式使用另一个格式化程序:
String output = ChronoFormatter
.ofPattern("yyyy/MM/dd", PatternType.CLDR, Locale.ROOT, PlainDate.axis())
.format(gregorian);
评论中的问题更新:
如果输入包含一个时间部分,那么整个内容就是一个时间戳,而不是日历日期。因此,用户可以解析到某个时刻
TZID tzid = () -> "Asia/Tehran"; // used as default time zone for parsing
ChronoFormatter<Moment> f =
ChronoFormatter.setUpWithOverride(Locale.ENGLISH, PersianCalendar.axis())
.addPattern("yyyy/MM/dd HH:mm[:ss]", PatternType.CLDR) // optional seconds
.build()
.withTimezone(tzid);
Moment expected =
PlainTimestamp.of(2018, 4, 3, 10, 15, 5).inTimezone(tzid);
assertThat(
f.parse("1397/01/14 10:15:05"),
is(expected));
格式化模式区分大小写。YYYY大写表示基于周的年,而不是日历年。请不要?