gpt4 book ai didi

java - 将毫秒转换为日期和时间并按语言环境设置格式

转载 作者:行者123 更新时间:2023-11-29 03:24:24 26 4
gpt4 key购买 nike

如何将毫秒转换为时间和日期字符串并按照用户期望的方式正确设置格式?

我做了以下事情:

((SimpleDateFormat)DateFormat.getDateInstance(DateFormat.DEFAULT,Locale.getDefault())).format(new Date(Long.parseLong(timeInMilliseconds)));

这似乎可行,但我只能通过这种方法获取日期。

编辑:

为了清楚起见,我需要以某种方式从系统中获取时间/日期模式,以便为每个用户提供他的通用格式

现在我将您的解决方案与我的解决方案相结合,它似乎按我预期的那样工作。

private String getFormattedDateTimeString(Context context, String timeInMilliseconds) {
SimpleDateFormat dateInstance = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.getDefault());
SimpleDateFormat timeInstance = (SimpleDateFormat) DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.getDefault());
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(Long.parseLong(timeInMilliseconds));
String date = dateInstance.format(calendar.getTime());
String time = timeInstance.format(calendar.getTime());
return date + " " + time;
}

我到底为什么要对这个问题投反对票???

最佳答案

所有其他答案都忽略了日期时间的字符串表示需要本地化这一点。

乔达时间

Joda-Time 2.3 库使这项工作变得更加容易。

Joda-Time 利用 java.util.Locale确定日期时间字符串表示的正确格式。 DateTimeFormat类为“样式”模式提供了一个选项,作为生成 DateTimeFormatter 的一种方式.您指定一个双字符样式模式。第一个字符是日期样式,第二个字符是时间样式。指定字符“S”表示短样式,“M”表示中等,“L”表示长,“F”表示完整。可以通过指定样式字符“-”来省略日期或时间。

如果您没有指定区域设置或时区,将使用 JVM 的默认值。

语言环境

创建 java.util.Locale ,你需要:

示例代码

// Simulate input.
long millisecondsSinceEpoch = DateTime.now().getMillis();

// Proceed with a 'long' value in hand.
DateTime dateTimeUtc = new DateTime( millisecondsSinceEpoch, DateTimeZone.UTC );

DateTimeZone timeZone = DateTimeZone.forID( "Asia/Riyadh" );
DateTime dateTimeRiyadh = dateTimeUtc.withZone( timeZone );

// 'ar' = Arabic, 'SA' = Saudi Arabia.
java.util.Locale locale = new Locale( "ar", "SA" ); // ( language code, country code );
DateTimeFormatter formatter = DateTimeFormat.forStyle( "FF" ).withLocale( locale ).withZone( timeZone );
String output = formatter.print( dateTimeUtc );

转储到控制台...

System.out.println( "millisecondsSinceEpoch: " + millisecondsSinceEpoch );
System.out.println( "dateTimeUtc: " + dateTimeUtc );
System.out.println( "dateTimeRiyadh: " + dateTimeRiyadh );
System.out.println( "output: " + output );

运行时...

millisecondsSinceEpoch: 1392583624765
dateTimeUtc: 2014-02-16T20:47:04.765Z
dateTimeRiyadh: 2014-02-16T23:47:04.765+03:00
output: 16 فبراير, 2014 AST 11:47:04 م

关于java - 将毫秒转换为日期和时间并按语言环境设置格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com