我想知道用户本地语言的星期几(星期一,星期二...)。例如,如果用户是法语,则为“ Lundi”,“ Mardi”等。
我已经阅读了这篇文章,但是它只返回一个int,而不是用用户语言显示的日期字符串:在Android中获取星期几的最简单方法是什么?
更一般而言,您如何获得以用户语言编写的一周中的每一天和一年中的所有月份?
我认为这是可能的,例如Google议程提供了用用户本地语言写的日期和月份。
谢谢 !!
我想知道用户本地语言的星期几(星期一,星期二...)。例如,如果用户是法语,则为“ Lundi”,“ Mardi”等。
我已经阅读了这篇文章,但是它只返回一个int,而不是用用户语言显示的日期字符串:在Android中获取星期几的最简单方法是什么?
更一般而言,您如何获得以用户语言编写的一周中的每一天和一年中的所有月份?
我认为这是可能的,例如Google议程提供了用用户本地语言写的日期和月份。
谢谢 !!
Answers:
使用SimpleDateFormat相对于用户区域设置将日期和时间格式化为人类可读的字符串。
获取星期几(例如“ Monday”)的小例子:
SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);
试试这个:
int dayOfWeek = date.get(Calendar.DAY_OF_WEEK);
String weekday = new DateFormatSymbols().getShortWeekdays()[dayOfWeek];
DateFormatSymbols.getInstance()
(尽管目前可能会得到相同的结果)。
我知道已经回答了,但谁找“星期五”这样的
星期五-
SimpleDateFormat sdf = new SimpleDateFormat("EEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);
谁想要完整日期字符串,他们可以在星期五使用4E
对于星期五
SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);
请享用...
她是我用来获取日期名称的(0-6
意思是monday - sunday
):
public static String getFullDayName(int day) {
Calendar c = Calendar.getInstance();
// date doesn't matter - it has to be a Monday
// I new that first August 2011 is one ;-)
c.set(2011, 7, 1, 0, 0, 0);
c.add(Calendar.DAY_OF_MONTH, day);
return String.format("%tA", c);
}
public static String getShortDayName(int day) {
Calendar c = Calendar.getInstance();
c.set(2011, 7, 1, 0, 0, 0);
c.add(Calendar.DAY_OF_MONTH, day);
return String.format("%ta", c);
}
String output =
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.getDayOfWeek()
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
内置在Java 8和更高版本中并反向移植到Java 6&7和Android的java.time类包括了方便的DayOfWeek
枚举。
根据标准ISO 8601定义对日期进行编号,周一至周日为1-7。
DayOfWeek dow = DayOfWeek.of( 1 );
该枚举包括getDisplayName
生成当天本地翻译名称的字符串的方法。
该Locale
对象指定了将在翻译中使用的人类语言,并指定了文化规范来决定诸如大写和标点符号之类的问题。
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
要获取今天的日期,请使用LocalDate
此类。请注意,时区至关重要,因为对于任何给定时刻,日期在全球范围内都不同。
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
DayOfWeek dow = today.getDayOfWeek();
String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
请记住,区域设置与时区无关。两个独立的正交问题。您可能希望用法语对印度(Asia/Kolkata
)区域中的日期时间进行演示。
更新:现在处于维护模式的Joda-Time项目建议迁移到java.time类。
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone );
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter formatterUnJourQuébécois = DateTimeFormat.forPattern( "EEEE" ).withLocale( locale );
String output = formatterUnJourQuébécois.print( now );
System.out.println("output: " + output );
输出:samedi
该java.time框架是建立在Java 8和更高版本。这些类取代麻烦的老传统日期时间类,如java.util.Date
,Calendar
,和SimpleDateFormat
。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
在哪里获取java.time类?
试试这个...
//global declaration
private TextView timeUpdate;
Calendar calendar;
.......
timeUpdate = (TextView) findViewById(R.id.timeUpdate); //initialize in onCreate()
.......
//in onStart()
calendar = Calendar.getInstance();
//date format is: "Date-Month-Year Hour:Minutes am/pm"
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy HH:mm a"); //Date and time
String currentDate = sdf.format(calendar.getTime());
//Day of Name in full form like,"Saturday", or if you need the first three characters you have to put "EEE" in the date format and your result will be "Sat".
SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE");
Date date = new Date();
String dayName = sdf_.format(date);
timeUpdate.setText("" + dayName + " " + currentDate + "");
结果是...
快乐的编码。
抱歉,我们将延迟回复。但这将正常工作。
daytext=(textview)findviewById(R.id.day);
Calender c=Calender.getInstance();
SimpleDateFormat sd=new SimpleDateFormat("EEEE");
String dayofweek=sd.format(c.getTime());
daytext.setText(dayofweek);
如果您正在使用ThreetenABP日期库bt Jake Warthon,则可以执行以下操作:
dayOfWeek.getDisplayName(TextStyle.FULL, Locale.getDefault()
在您的dayOfWeek
实例上。有关更多信息,请 访问:https:
//github.com/JakeWharton/ThreeTenABP https://www.threeten.org/threetenbp/apidocs/org/threeten/bp/format/TextStyle.html
//selected date from calender
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); //Date and time
String currentDate = sdf.format(myCalendar.getTime());
//selcted_day name
SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE");
String dayofweek=sdf_.format(myCalendar.getTime());
current_date.setText(currentDate);
lbl_current_date.setText(dayofweek);
Log.e("dayname", dayofweek);
SimpleDateFormat
,Date
并且Calendar
(也在问题中使用)。