精华内容
下载资源
问答
  • 如何使用Java获取时区的当前日期和时间?我的应用托管在伦敦服务器中。 我在西班牙马德里。 因此,时区为-2小时。如何获取带有时区的当前日期/时间。Date curr_date = new Date(System.currentTimeMillis());例如...

    如何使用Java获取时区的当前日期和时间?

    我的应用托管在伦敦服务器中。 我在西班牙马德里。 因此,时区为-2小时。

    如何获取带有时区的当前日期/时间。

    Date curr_date = new Date(System.currentTimeMillis());

    例如

    Date curr_date = new Date(System.currentTimeMillis("MAD_TIMEZONE"));

    与Joda-Time

    DateTimeZone zone = DateTimeZone.forID("Europe/Madrid");

    DateTime dt = new DateTime(zone);

    int day = dt.getDayOfMonth();

    int year = dt.getYear();

    int month = dt.getMonthOfYear();

    int hours = dt.getHourOfDay();

    int minutes = dt.getMinuteOfHour();

    10个解决方案

    88 votes

    java.time.ZonedDateTime始终基于UTC ...或时区中立,具体取决于您要如何查看。 java.time.ZonedDateTime仅代表一个时间点; 它独立于时区,距离Unix时代仅几毫秒。 没有“ DateTime的本地实例”的概念。 将Date与27413176823007160160和/或java.time.ZonedDateTime结合使用以使用“本地”时区。 使用TimeZone.getTimeZone("Europe/Madrid")获取马德里时区。

    ...或使用Joda Time,这会使整个事情变得更加清晰,IMO。 在“乔达时间”中,您将使用java.time.ZonedDateTime值,该值是特定日历系统和时区中的即时时间。

    在Java 8中,您将使用java.time.ZonedDateTime,这与Joda Time的DateTime在Java 8中等效。

    Jon Skeet answered 2020-02-10T11:09:41Z

    52 votes

    正如乔恩·斯基特(Jon Skeet)所说,SimpleDateFormat没有时区。 DateFormat对象表示自UTC 1970年1月1日上午12:00开始的毫秒数。 它不包含时区信息。

    当您将日期对象格式化为字符串时(例如,使用2741318187187177477120),则可以在DateFormat对象上设置时区,以使其知道要在哪个时区中显示日期和时间:

    Date date = new Date();

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    // Use Madrid's time zone to format the date in

    df.setTimeZone(TimeZone.getTimeZone("Europe/Madrid"));

    System.out.println("Date and time in Madrid: " + df.format(date));

    如果要运行程序所在计算机的本地时区,请使用:

    df.setTimeZone(TimeZone.getDefault());

    Jesper answered 2020-02-10T11:10:11Z

    16 votes

    使用日历很简单:

    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("Europe/Madrid"));

    Date currentDate = calendar.getTime();

    dfa answered 2020-02-10T11:10:31Z

    9 votes

    使用Java 8和更高版本中内置的java.time类:

    public static void main(String[] args) {

    LocalDateTime localNow = LocalDateTime.now(TimeZone.getTimeZone("Europe/Madrid").toZoneId());

    System.out.println(localNow);

    // Prints current time of given zone without zone information : 2016-04-28T15:41:17.611

    ZonedDateTime zoneNow = ZonedDateTime.now(TimeZone.getTimeZone("Europe/Madrid").toZoneId());

    System.out.println(zoneNow);

    // Prints current time of given zone with zone information : 2016-04-28T15:41:17.627+02:00[Europe/Madrid]

    }

    Zeeshan answered 2020-02-10T11:10:51Z

    3 votes

    检查这可能会有所帮助。 对我来说很好。 该代码还涵盖了夏令时

    TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");

    Calendar cal = Calendar.getInstance();

    // If needed in hours rather than milliseconds

    int LocalOffSethrs = (int) ((cal.getTimeZone().getRawOffset()) *(2.77777778 /10000000));

    int ChinaOffSethrs = (int) ((tz.getRawOffset()) *(2.77777778 /10000000));

    int dts = cal.getTimeZone().getDSTSavings();

    System.out.println("Local Time Zone : " + cal.getTimeZone().getDisplayName());

    System.out.println("Local Day Light Time Saving : " + dts);

    System.out.println("China Time : " + tz.getRawOffset());

    System.out.println("Local Offset Time from GMT: " + LocalOffSethrs);

    System.out.println("China Offset Time from GMT: " + ChinaOffSethrs);

    // Adjust to GMT

    cal.add(Calendar.MILLISECOND,-(cal.getTimeZone().getRawOffset()));

    // Adjust to Daylight Savings

    cal.add(Calendar.MILLISECOND, - cal.getTimeZone().getDSTSavings());

    // Adjust to Offset

    cal.add(Calendar.MILLISECOND, tz.getRawOffset());

    Date dt = new Date(cal.getTimeInMillis());

    System.out.println("After adjusting offset Acctual China Time :" + dt);

    Subhamay answered 2020-02-10T11:11:11Z

    2 votes

    您将为此使用JodaTime。 关于TimeZone,Java.util.Date非常受限制。

    Joshua Partogi answered 2020-02-10T11:11:31Z

    1 votes

    我无法使用日历来工作。 您必须使用DateFormat

    //Wednesday, July 20, 2011 3:54:44 PM PDT

    DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);

    df.setTimeZone(TimeZone.getTimeZone("PST"));

    final String dateTimeString = df.format(new Date());

    //Wednesday, July 20, 2011

    df = DateFormat.getDateInstance(DateFormat.FULL);

    df.setTimeZone(TimeZone.getTimeZone("PST"));

    final String dateString = df.format(new Date());

    //3:54:44 PM PDT

    df = DateFormat.getTimeInstance(DateFormat.FULL);

    df.setTimeZone(Timezone.getTimeZone("PST"));

    final String timeString = df.format(new Date());

    wjin answered 2020-02-10T11:11:51Z

    0 votes

    这是一个例子:

    Calendar c = Calendar.getInstance(TimeZone.getDefault());

    Date date = c.getTime();

    Martijn Courteaux answered 2020-02-10T11:12:10Z

    0 votes

    以下是为您的区域找到时间的一些步骤:

    现在的日期=新的Date();

    DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

    df.setTimeZone(TimeZone.getTimeZone("Europe/London"));

    System.out.println("timeZone.......-->>>>>>"+df.format(now));

    shan answered 2020-02-10T11:12:35Z

    -2 votes

    DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);

    df.setTimeZone(TimeZone.getTimeZone("PST"));

    final String dateTimeString = df.format(new Date());

    shamim answered 2020-02-10T11:12:50Z

    展开全文
  • Java获取时区或偏移

    2020-05-12 18:57:57
    下面是如何获取时区代码 //东八区--->+08:00,获取的格式类似于“+08:00”,不会出现“CET”这种某些地区“标准时间”的格式 public static String getTimeZone() { Calendar calendar = Calendar.getInstance...

    关于时区,可以进入世界时区网站查看详情:世界时区
    下面是如何获取时区代码

    //东八区--->+08:00,获取的格式类似于“+08:00”,不会出现“CET”这种某些地区“标准时间”的格式
    public static String getTimeZone() {
        Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.getDefault());
        String timeZone = new SimpleDateFormat("Z").format(calendar.getTime());
        return "" + timeZone.substring(0, 3) + ":" + timeZone.substring(3, 5);
    }
    
    //东八区--->480
    public static int getTimeZoneOffset() {
        Calendar calendar = new GregorianCalendar();
        return calendar.getTimeZone().getOffset(System.currentTimeMillis()) / 1000 / 60;
    }
    
    展开全文
  • 我正在尝试从String解析日期并获取long值. long值将稍后发送到SQL查询.这是我的代码:String dayDate = "28-02-2013";SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");Date day = new Date();try {day =...

    我正在尝试从String解析日期并获取long值. long值将稍后发送到SQL查询.

    这是我的代码:

    String dayDate = "28-02-2013";

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

    Date day = new Date();

    try {

    day = sdf.parse(dayDate);

    } catch (ParseException pe) {

    pe.printStackTrace();

    }

    System.out.println("day : "+day.toString()+ " long : " + day.getTime());

    它给出了以下输出:

    day : Thu Feb 28 00:00:00 EET 2013 long : 1362002400000

    这是正确但不是我想要的,因为长值导致2013年2月27日星期三22:00:00 GMT(http://www.epochconverter.com/)(我在GMT 2时区).我需要发送纠正sql的长值.

    反正有没有使用外部库来解决这个问题?

    展开全文
  • 在Tomca 启动的sh中,默认的设置是 -Duser.timezone=GMT,如果在程序中使用 Date = new Date()则对应的是零时区的时间。如果操作系统的时区也是零时区就没什么。如果不是就有时间偏差。以下可以帮助纠正import java....

    在Tomca 启动的sh中,默认的设置是 -Duser.timezone=GMT,如果在程序中使用 Date = new Date()则对应的是零时区的时间。如果操作系统的时区也是零时区就没什么。如果不是就有时间偏差。以下可以帮助纠正

    import java.io.BufferedReader;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import java.util.TimeZone;

    public class Main {

    /**

    * @param args

    */

    public static void main(String[] args) {

    String timeZoneStr = "+0800";

    try {

    String[]   command   =   new   String[]   {"date", "-R"};

    Process process=Runtime.getRuntime().exec(command);

    InputStream is =  process.getInputStream();

    InputStreamReader isr = new InputStreamReader(is);

    BufferedReader br = new BufferedReader(isr);

    String line = null;

    while ((line = br.readLine()) != null) {

    break;

    }

    timeZoneStr = line.substring(line.length()-5, line.length()-2);

    System.out.println( timeZoneStr) ;

    }catch (Exception e){

    e.printStackTrace();

    }

    TimeZone zone = TimeZone.getTimeZone("GMT"+timeZoneStr);

    String DATE_FORMAT_LONG="yyyy-MM-dd HH:mm";

    SimpleDateFormat sdf=new SimpleDateFormat(DATE_FORMAT_LONG);

    sdf.setTimeZone(zone);

    String dateStr = sdf.format(new Date());

    System.out.println( dateStr);

    }

    }

    展开全文
  • Java 可以通过 Timezone 获取时区,但是通过 Timezone 获取的时区是 JVM 初始化时保存的时区,并不是操作系统所设置的时区。当修改过操作系统的时区后,JVM 并不会同步更新。Timezone 获取时区的代码如下:// 获取 ...
  • Java 获取操作系统时区

    万次阅读 2019-08-16 14:33:32
    Java 可以通过 Timezone 获取时区,但是通过 Timezone 获取的时区是 JVM 初始化时保存的时区,并不是操作系统所设置的时区。当修改过操作系统的时区后,JVM 并不会同步更新。Timezone 获取时区的代码如下: // ...
  • 关于java获取系统时间,有偏差时(早八小时)关键词:java获取系统时间错误,服务器获取系统时间错误,偏差,java设置时区TimeZone.setDefault(TimeZone.getTimeZone("GMT+8")); // 设置时区(如果不设置...
  • java获取时区时间戳

    2021-04-12 10:33:52
    * 获取当前时间时间戳(零时区) * * @return */ public static long generateTimestamp(){ TimeZone timeZone1 = TimeZone.getTimeZone(“GMT”);// 获取格林威治标准时区 TimeZone.setDefault(timeZone1);//设置程序...
  • Java获取默认时区

    2020-04-13 12:40:22
    示例代码: public static void main(String[] args) { ZonedDateTime time = ZonedDateTime.now(); System.out.println(time); } 输出结果:
  • 标签:/*** 得到指定时间的UTC0时间* @param beforeDate* @param dataFormat 格式为"yyyy-MM-dd HH:mm:ss"* @return*/public static String getUTCTimeStr(Date beforeDate, String dataFormat) {SimpleDateFormat ...
  • java 获取当前时区

    万次阅读 2018-05-15 15:01:56
    public static String getTimeZone(){ Calendar cal = Calendar.getInstance(); int offset = cal.get(Calendar.ZONE_OFFSET); cal.add(Calendar.MILLISECOND, -offset); Long timeStampUTC = cal....
  • Java获取指定时区的时间戳

    千次阅读 2020-06-24 10:25:04
    本文主要讲,在Java中如何通过一个标准格式时间字符串("yyyy-MM-dd HH:mm:ss"),来获取其对应的各个时区的时间戳信息。 2. 代码示例 功能代码: 获取时间字符串对应的指定时区的时间戳 public static long ...
  • java获取Linux时区

    千次阅读 2012-02-27 16:50:09
    在Tomca 启动的sh中,默认的设置是 -Duser.timezone=GMT,如果在程序中使用 Date = new Date()则对应的是零时区的时间。如果操作系统的时区也是零时区就没什么。如果不是就有时间偏差。以下可以帮助纠正 import...
  • CST2011,所以以为是数据库存储数据出了问题,跟踪程序...下面是正确的程序import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util....
  • java获取系统时区

    2015-07-06 16:59:00
    //Calendar cal = Calendar.getInstance(); //TimeZone timeZone = cal.getTimeZone(); TimeZone timeZone = TimeZone.getDefault(); System.out.println(timeZone.getID());...System.out.println(timeZon...
  • 小编典典 import org.joda.time.*; import org.joda.time.format.*; public class Test { public static ... 使用Java 8,您可以通过ZoneRules其nextTransition和previousTransition方法获得相同的信息。 2020-09-18
  • Java获取指定时区的时间格式

    千次阅读 2018-11-19 13:28:26
    分享一个获取指定时区的时间格式方法:timeZoneOffset指定为8,获取东8区的时间,timeZoneOffset指定为-5,获取西5区的时间。 import java.text.SimpleDateFormat; import java.util.Date; import java.util....
  • 看了两个小时的APIjava关于时间、日期的类真是混乱,真是烦Calendar类设了时区还是没用,返回的还是当前系统时间。后来一怒把那些类所有方法仔细研究一遍,找到一个比较好的方法。贡献出来:TimeZone类,getTimeZone...
  • JAVA 获取时区时间

    千次阅读 2018-11-02 17:59:10
    /** * 获取当前零时区时间 * @param format * @return */ public static final String zeroZoneTime(String format) { SimpleDateFormat dateFormat = new SimpleDateFormat(format); dateFormat.setTimeZone(Time...
  • java获取当前系统时区

    2019-12-26 09:38:43
    /** * <获取当前系统时区> * * @return 时区 * @throws */ public static String getTimeZone() { TimeZone timeZone = TimeZone.getDefault(); return timeZone.get...
  • JAVA获取某个时区的时间

    千次阅读 2016-04-07 17:31:41
    比如用java获取纽约的标准时间,代码如下: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = Calendar.getInstance(); sdf.setTimeZone(TimeZone.getTimeZone(...
  • JAVA需要传时区的时候我们通常传入一个字符串,然后需要根据这个字符串判断其有效性,经常需要使用ZoneId的of方法 zoneId = ZoneId.of("America/New_York") 我们也可以使用ZoneId的getAvailableZoneIds()方法...
  • java获取当前时区的时间

    千次阅读 2014-02-19 16:14:26
    刚接触java,好多不懂的东西,今天终于获取了当前时区的时间 之前用过的一个获取时间的方法是 import java.util.Date; public class GetTime  { public static void main(String[] args)  { Date d = new Date...
  • java关于时区获取的几种方式

    万次阅读 2017-11-06 10:19:18
    java8新API获取时区,与传统的传入时间获取时区的各种方式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 833
精华内容 333
关键字:

java获取时区

java 订阅