java取系统时间,存入数据库,要小时分钟秒

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java取系统时间,存入数据库,要小时分钟秒相关的知识,希望对你有一定的参考价值。

struts2 sping hibernate, 数据库mysql
java里取时间后Date date = new Date()
这个date存入数据库了,但是数据库里的字段值是2010/05/22。没有小时分钟秒。
怎么才能把小时分钟秒也存入数据库
我数据库里的字段是date类型的,映射文件.hbm.xml映射的也是date类型,javabean里的属性也是date类型。

问题解决了,java文件不用改,可以用Date date = new Date()来获取时间,mysql里改成Datetime类型,映射文件写成
<property name="userUpdatetime">
<column name="user_updatetime"
sql-type="datetime" not-null="true"/>
</property>

mysql数据库里有自动取得系统时间字段,如果你想手动输入时间的话可以把时间设置为string类型,然后通过获取时间的方法往数据库里存。
import java.util.Calendar;
import java.util.Date;

public class abcd

public static void main(String[] args)
Calendar c = Calendar.getInstance();
Date d = c.getTime();
String a = d.toLocaleString();
System.out.println(a);


一个简单的获取当前系统时间方法。追问

我问得不是要获取当前时间啊

参考技术A 实现思路:首先oracle数据库中的插入数据可以用insert语句,之后即可通过java方式进行插入,如:
String userinfo="insert into userinfo VALUES("+"'"+userD+"',sysdate"+")";
//之后执行插库操作。
备注:sysdate类型就是时分秒都有的,所以不需要进行任何操作即可。
实际在数据库中插入语句如下:
sql:insert into userinfo values('123',sysdate);
参考技术B 用java.utils.Date,而不是java.sql.Date。另mysql里要用Datetime类型不是Date追问

嗯?用的java.util.Date,mysql里把date类型改为了Datetime类型。谢谢

本回答被提问者和网友采纳
参考技术C java.util.Date date = new java.util.Date();
java.text.DateFormat myformat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowdate = myformat.format(date);

如果你用实体类注解的话,只需要在日期属性的getter()方法前加一句注释,如下:
@Temporal(TemporalType.TIMESTAMP)追问

谢谢你的方法,不知道行不行的通,暂时不想String类型

参考技术D Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new java.util.Date().toLocaleString());
Date sqlDate = new java.sql.Date(date.getTime());
就有时分秒了追问

怎么不行啊,跟直接用Date date = new Date()没区别,数据库里还是存进2010/5/24

Android 倒计时(时间戳转换天小时分钟秒)

最近在做类似于商品购买的时间倒计时,在此记录一下,话不多少,请看效果图:

 倒计时 = 从后台获取到当前时间的时间戳  - 商品的截止时间
(备注:如果当前时间的时间戳获取手机本地的会出问题,因为调整本地时间后就造成的时间错误,所以线上环境每次取从后台获取到当前时间的时间戳)
此处涉及到时间戳和日期年月日时分秒的转换

//将时间戳转化为对应的时间  日-时-分-秒
    public static String timeConversion(long time) 
        long day = 0;
        long hour = 0;
        long minutes = 0;
        long sencond = 0;
        long dayTimp = time % (3600*24);
        long hourTimp = time % 3600;

        if(time >= 86400)
            day = time / (3600*24);
            if(dayTimp != 0)
                time = time-(day * 24 * 60 * 60);
                if(time  >= 3600 && time < 86400)
                    hour = time / 3600;
                    if (hourTimp != 0) 
                        if (hourTimp  >= 60) 
                            minutes = hourTimp / 60;
                            if (hourTimp % 60 != 0) 
                                sencond = hourTimp % 60;
                            
                         else if (hourTimp < 60)
                            sencond = hourTimp;
                        
                    
                 else if(time < 3600)
                    minutes = time / 60;
                    if (time % 60 != 0) 
                        sencond = time % 60;
                    
                
            
         else if (time  >= 3600 && time < 86400) 
            hour = time / 3600;
            if (hourTimp != 0) 
                if (hourTimp  >= 60) 
                    minutes = hourTimp / 60;
                    if (hourTimp % 60 != 0) 
                        sencond = hourTimp % 60;
                    
                 else if (hourTimp < 60)
                    sencond = hourTimp;
                
            
         else if(time < 3600)
            minutes = time / 60;
            if (time % 60 != 0) 
                sencond = time % 60;
            
        
        return (day<10?("0"+day):day) + "天" + (hour<10?("0"+hour):hour) + "时" + (minutes<10?("0"+minutes):minutes) + "分" + (sencond<10?("0"+sencond):sencond)+ "秒";
    
 //将时间字符串转为时间戳字符串
    public static Long getStringTimestamp(String time) 
        Long longTime = null;
        try 
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            longTime = sdf.parse(time).getTime() / 1000;

         catch (ParseException e) 
            e.printStackTrace();
        
        return longTime;
    

通过handler 发消息,每隔1秒钟发送一次,时间递减

@SuppressLint("HandlerLeak")
        private Handler handler = new Handler() 
            @Override
            public void handleMessage (Message msg) 
                super.handleMessage(msg);
                long sysTime = System.currentTimeMillis();
                String sysTimeStr = (String) DateFormat.format("yyyy-MM-dd HH:mm:ss", sysTime);
                tv_time.setText("当前时间-----"+sysTimeStr);

                Long currentStamp = getStringTimestamp(sysTimeStr);
                Long currentLast = endStamp - currentStamp;
                if(currentLast <= 0)
                    handler.removeMessages(0);
                    tv_last_time.setText("购买时间截止");
                    return;
                
                String lastTime = timeConversion(currentLast);
                SpannableStringBuilder ss = new SpannableStringBuilder();
                ss.append("购买截止时间:"+lastTime);
                ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(MainActivity.this,R.color.color_gold)), 7, 9, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(MainActivity.this,R.color.color_gold)), 10, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(MainActivity.this,R.color.color_gold)), 13, 15, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(MainActivity.this,R.color.color_gold)), 16, 18, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                tv_last_time.setText(ss);

                handler.sendEmptyMessageDelayed(0, 1000);
            
        ;

最后在页面销毁时移除掉handler

@Override
    protected void onDestroy() 
        super.onDestroy();
        handler.removeCallbacksAndMessages(null);
    

    @Override
    protected void onPause() 
        super.onPause();
        handler.removeMessages(0);
    


希望本篇文章对于有需要的同学给与帮助,欢迎讨论!附上代码demo

以上是关于java取系统时间,存入数据库,要小时分钟秒的主要内容,如果未能解决你的问题,请参考以下文章

java 分别 取昨天零点 和 二十四点

mysql 数据库中根据当前系统时间,取前后几秒几分钟几小时几天

以小时和分钟获取当前时间

使用 Duration 对象在 Java 中将天、分钟、小时转换为秒失败

10个常见linux系统命令

在 ZonedDateTime 或 Instant 中将小时分钟和秒设置为 00