1)我需要找出用户的时区和时间。为此,我使用
Calendar currentdate1 = Calendar.getInstance();
TimeZone tz = Calendar.getInstance().getTimeZone();
System.out.println("time zone"+tz);
System.out.println(tz.getDisplayName()); // (Now India Standard Time)
System.out.println(tz.getID()); // (Now . Asia/Kolkata)
通过使用此功能,我需要在相应的时区找出该用户1的当前时间。
2)一个用户2在那里上传视频。我将其转换为毫秒并存储数据库。 User1希望将user2的上传时间视为与其时区对应的user1日期和时间。如何执行此操作。
答案 0 :(得分:0)
由于每次都以毫秒为单位存储,因此无需进行转换。你所追求的是以正确的格式呈现时间,以毫秒为单位。请考虑以下情形:
User2在对应于值t = 12345678911ms的日期上传视频(这是一个绝对值,对应于1970年1月1日00:00的偏移,无需更改)
User1想要查看哪个日期和时间与其时区上的值基于相对应。所以在设置了正确的日历/时区之后
Calendar user1C = Calendar.getInstance();//Executed on the system of user1 this command will get the correct locale and timezone:
您只需根据user2的值t设置user1的日历时间:
user1C.setTimeInMillis(t);//Sets the the time of the current calendar based on the value of user2
如果现在打印日历时间,您将看到与user2
对应的日期和时间System.out.println(user1C.getTime());
答案 1 :(得分:0)
重要的是要理解,java.util.Date
对象是绝对的时间点。无法从该对象获取时区。 java.util.Date
后面的长值可以解释为以人们通常使用它的方式获取日期(日期字符串)。这取决于格式化程序对象使用的时区。
您还可以从日期字符串中获取java.util.Date
对象。结果取决于日历对象用于转换/解析的时区。
此示例可能有所帮助:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class Test {
public static void main(final String[] args) {
Date now = new Date();
printDateForBerlinAndKolkata(now, "Current Time:");
Calendar cal1 = new GregorianCalendar(TimeZone.getTimeZone("Europe/Berlin"));
Calendar cal2 = new GregorianCalendar(TimeZone.getTimeZone("Asia/Kolkata"));
cal1.set(2014, 11, 5, 15, 30);
printDateForBerlinAndKolkata(cal1.getTime(), "Gregorian Calendar 2014-12-05 15:30 Timezone for Berlin:");
cal2.set(2014, 11, 5, 15, 30, 0);
printDateForBerlinAndKolkata(cal2.getTime(), "Gregorian Calendar 2014-12-05 15:30 Timezone for Kolkata:");
}
private static void printDateForBerlinAndKolkata(Date now, String headline) {
System.out.println(headline);
System.out.println("---------------------------------------------");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ssZ");
sdf.setTimeZone(TimeZone.getTimeZone("Europe/Berlin"));
System.out.println("Europe/Berlin: " + sdf.format(now));
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
System.out.println("Asia/Kolkata: " + sdf.format(now));
System.out.println("long value: " + now.getTime());
System.out.println("=============================================\n");
}
}
输出:
Current Time:
---------------------------------------------
Europe/Berlin: 2014 Dez 05 16:35:21+0100
Asia/Kolkata: 2014 Dez 05 21:05:21+0530
long value: 1417793721481
=============================================
Gregorian Calendar 2014-12-05 15:30 Timezone for Berlin:
---------------------------------------------
Europe/Berlin: 2014 Dez 05 15:30:21+0100
Asia/Kolkata: 2014 Dez 05 20:00:21+0530
long value: 1417789821506
=============================================
Gregorian Calendar 2014-12-05 15:30 Timezone for Kolkata:
---------------------------------------------
Europe/Berlin: 2014 Dez 05 11:00:00+0100
Asia/Kolkata: 2014 Dez 05 15:30:00+0530
long value: 1417773600506
=============================================
也许以下链接也很有趣: Wikipedia Article on Unix Time