simpledateformat

恼人的时区问题

隐身守侯 提交于 2020-01-29 06:03:08
参考: http://www.99cankao.com/date/timezone.php 由于由于工作中经常要采集来自不同国家网站的数据,和来自不同时区的同事月会议,开发程序,所以经常在时区上转不过弯来,这里整理了一下,做个笔记,也希望对大家有所帮助。 时区的定义 1884年在华盛顿召开的国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。 GMT 格林尼治平时(又称 格林尼治平均时间 或 格林尼治标准时间 ,旧译格林威治标准时间;英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。 理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀, 这个时刻可能与实际的太阳时有误差,最大误差达16分钟 。 由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治时间已经不再被作为标准时间使用。现在的标准时间,是由原子钟报时的协调世界时(UTC)。 UTC 协调世界时,又称世界标准时间或世界协调时间,简称 UTC (从英文“Coordinated Universal Time”/法文“Temps Universel Coordonné”而来),是最主要的世界时间标准

Error when converting date format to another

廉价感情. 提交于 2020-01-28 11:38:11
问题 I have a String in format " YYYY-MM-dd " and i want convert this into " MMM dd, yyyy " format. I used bellow code to do this; But when i convert " 2014 -11-18" the output is this "Sun Dec 29 00:00:00 IST 2013 " How can I solve this? DateFormat target=new SimpleDateFormat("MMM dd, yyyy"); String P_date="2014-11-18" Date test1 = new SimpleDateFormat("YYYY-MM-dd").parse(P_date); String converted_date=target.format(test1); Date test=target.parse(converted_date); 回答1: The y (lowercase Y) format

SimpleDateFormat大写Y和小写y的区别

别等时光非礼了梦想. 提交于 2020-01-27 09:14:21
今天导入订单时发现一只报错,token获取失败,token获取需要传参数当前时间撮timestamp,要求我传的和接口系统获取的不能超过6分钟,我传的是201912301119,接口那边一直报异常,说我的时间异常,debug后发现,那边获取当前时间成了202012301119,奇怪了,两边获取当前时间怎么正好相差一年呢? 仔细比较才发现,原来是两边的获取当前时间后的格式化不同造成的,我这边是: SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm"); 而服务器那边是: SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMddHHmm"); 就是一个字母Y的大小写区别,来来来,我们本地写个main方法测试一下: 小写y: 大写Y: 看到没有,格式化时,大写Y和小写y刚好相差一年,下面说一下具体原因: y 是Year, Y 表示的是Week year 经过试验:Week year 意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。 我现在刚好是2019-12-30 本周刚好跨年,所以出现了上面的额情况,导致今天的程序一直报错,所以我们在开发过程中遇到时间格式化的最好就用小写的yyyy,虽然一年遇到一次,但还是幸运的遇到了

Windows下固定周期自动备份mysql数据库

左心房为你撑大大i 提交于 2020-01-27 02:56:42
Windows下固定周期自动备份mysql数据库 1.在Java项目中resources目录下创建config.properties用来配置备份数据库相关信息 #备份周期 多长时间备份一次 ( 小时 ) frequency = 24 #mysqldump 环境位置 指向MYSQL的bin目录下 path = C : / / Program Files //MySQL//MySQL Server 5.5//bin// #导出主程序文件名 bin目录下导出程序 exeFile = mysqldump . exe #导出路径 exportPath = C : / / JAVA //DBbackup//// #导出的数据库 多个用 ',' 分割 database = bc , sm , abm #导出的数据库主机 host = 127.0 .0 .1 #数据库用户名 user = root #数据库密码 password = 12345 a 2.将下方代码拷贝到编辑器,打包成可运行jar,使用DOS窗口JAVA - JAR autoBackDB.jar 来运行jar包 public class autobackDB { private SimpleDateFormat simpleDateFormat = new SimpleDateFormat ( "yyyy-MM-dd" ) ;

Getting error java.text.ParseException: Unparseable date: (at offset 0) even if the Simple date format and string value are identical

怎甘沉沦 提交于 2020-01-26 10:54:11
问题 I'm always getting the parse exception even if the format to check and the string value are same. Here is the code: String format = "EEE MMM dd HH:mm:ss z yyyy"; String value = "Mon Sep 18 10:30:06 MST 2017"; public static boolean isValidFormat(String format, String value) { Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat(format); date = sdf.parse(value); // here it breaks if (!value.equals(sdf.format(date))) { date = null; } } catch (ParseException ex) { ex

day12_Object类、常用API

徘徊边缘 提交于 2020-01-26 10:51:49
Object类 概述 java.lang.Object 类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类(包括数组)都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类, 那么默认则继承自Object类。例如 public class MyClass /*extends Object*/ { // ... } 根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。今天我们主要学习其中的2个: public String toString() :返回该对象的字符串表示。 public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。 toString方法 方法摘要 public String toString() :返回该对象的字符串表示。 下面我们以代码举例的方式来说明toString方法。首先我们自定义Person类,代码如下 package demo01; public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age

常用的API和基础算法

泪湿孤枕 提交于 2020-01-25 23:00:44
和数学相关 1,java.lang.Math类 abs(x):求绝对值 sqrt(x):求平方根 pow(x,y):求x的y次方 ceil(x):向上取整 floor(x):向下取整 round(x):四舍五入 random():得到[0,1)范围的随机值 max(x,y):求x,y的最大值 min(x,y):求x,y的最小值 PI:圆周率 2,java.Math包 BigInteger:不可变,任意精度的整数 BigDecimal:不可变,任意精度的小数 它们要new对象来表示数据,要通过add,subtract,multiply,divide等方法来进行算术运算 3,java.util.Random Random r = new Random(); double d = r.nextDouble();//[0,1) int i = r.nextInt();//int范围内 int j = r.nextInt(x);//[0,x)范围内的整数 和日期时间相关 1,java.util.Date new Date():获取系统日期时间 new Date(Long 毫秒):根据毫秒值来获取日期时间 long getTime():获取该日期时间对应的毫秒值,距离1970-1-1 0:0:0 2,java.util.Calender 如何创建/获取Calender的对象? (1)

Java基本数据类型概述

懵懂的女人 提交于 2020-01-25 07:50:15
基本类型,或者叫做内置类型 ,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型。 java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化 。 一、八种基本数据类型的概述: Java基本类型共有 八种 ,基本类型可以分为三类, 字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。 数值类型又可以分为 整数类型byte、short、int、long和浮点数类型float、double 。 JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变 。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。 1、基本划分为: 1)、整型: byte short int long; 2)、浮点型 float double; 3)、逻辑型 boolean; 4)、字符型 char; 2、特点: 1)、数值类型不存在有(无)符号,它们的取值是固定不变的,不会随着机器硬件环境及其操作系统的改变而改变。 2)、特殊的数据类型void,对应的包装类为: Void。 二、八种基本数据类型的大小及占的二进制位数 1、八种基本数据类型的大小

Java基础复习--java.util.Timer定时任务

匆匆过客 提交于 2020-01-25 05:11:04
在java中,Timer类主要用于 定时性、周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下。 (1)schedule方法:“fixed-delay”;如果第一次执行时间被delay了,随后的执行时间 按 照 上一次 实际执行完成的时间点 进行计算 (2)scheduleAtFixedRate方法:“fixed-rate”;如果第一次执行时间被delay了,随后的执行时间 按照 上一次开始的 时间点 进行计算,并且为了”catch up”会多次执行任务,TimerTask中的执行体 需要考虑同步。 SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date startDate = dateFormatter.parse("2017/2/26 00:20:00"); Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask(){ public void run() { System.out.println("execute task!" + this.scheduledExecutionTime()); } }

SimpleDateFormat parses a string to wrong time

江枫思渺然 提交于 2020-01-24 17:41:06
问题 I run the following code: SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss"); try{ Date date = sdf.parse("03-28-2003 01:00:00"); System.out.print(date.toString()); } catch(Exception e){ //do something } The result of the parsing is this date: 2003-03-28T02:00:00.000+0300 One hour is added. When I change the year/day/hour to any other valid number, I get the correct time, no extra hour is added. If I only change the minutes or the seconds I still get the added hour. Can anyone